私はカスタム認証プロバイダを開発しました。認証に関してはすべてのことがOKです.HiveServer2が正常に起動し、認証された接続が適切に検証されます。 show tables
のような単純なHiveクエリも機能します。カスタム認証プロバイダと連携していないハイブ偽装
問題は、リモートのハイブクライアントからクエリを実行しようとするときです。私は自分の資格情報(ユーザー+パスワード...を渡して接続しているので、実際にはパスワードではなくトークンですが、それは関係ありません)、Hive設定は偽装の準備ができています。私のユーザーとしての質問。それにもかかわらず、ユーザはhive
というユーザを使用しますが、私のHDFSユーザスペースにはアクセス権がありません。例えば
私はテーブル作成した場合、:
hive-site.xml
:関連する設定パラメータについて
> create external table mytable (name string, job string, age string) row format delimited fields terminated by ',' location '/user/frb/testdir'
Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:Got exception: org.apache.hadoop.security.AccessControlException Permission denied: user=hive, access=EXECUTE, inode="/user/frb":frb:frb:drwxr-----
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkFsPermission(FSPermissionChecker.java:265)
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:251)
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkTraverse(FSPermissionChecker.java:205)
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:168)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkPermission(FSNamesystem.java:5519)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getFileInfo(FSNamesystem.java:3517)
at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getFileInfo(NameNodeRpcServer.java:785)
at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.getFileInfo(ClientNamenodeProtocolServerSideTranslatorPB.java:764)
at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:585)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:928)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2013)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2009)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1594)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2007)
)
を、これは私の設定(簡略化され、ないXMLなど)である
com.telefonica.iot.idm.endpoint=https://account.lab.fiware.org
hive.server2.enable.doAs=true
hive.server2.authentication=CUSTOM
hive.server2.custom.authentication.class=com.telefonica.iot.cosmos.hive.authprovider.OAuth2AuthenticationProviderImpl
core-site.xml
:
hadoop.proxyuser.hive.groups=*
hadoop.proxyuser.hive.hosts=*
カスタムHive認証プロバイダコードhereを見ることができます。
私は誰もが、私を助けてくださいことはできますハイブ0.13.0に
を使用していますか?
? – franklinsijo
'hadoop.proxyuser ...'の設定は 'core-site.xml'の中にあります。他のものは 'hive-site.xml'の中にあります。カスタムの認証プロバイダからアクセス可能であることを確認しました。 – frb
@frb変更を加えた後にhiveserver2を再起動しましたか? – Marco99