Özel bir kimlik doğrulama sağlayıcısı geliştirdim ve kimlik doğrulaması açısından her şey yolunda görünüyor: HiveServer2 iyi başlıyor ve doğrulanmış bağlantılar düzgün bir şekilde doğrulanıyor. Hatta, show tables
gibi basit Hive sorguları çalışır.Kovan kimliğine bürünme özel kimlik doğrulayıcısı sağlayıcısıyla çalışma
Uzak bir Hive istemcisinden bir sorguyu çalıştırmayı denediğimde sorun. Kimlik bilgileriimi (kullanıcı + parola ... iyi değil, gerçekten bir parola değil, bir simge, ancak bu uygun değil) bağlandığından ve Hive yapılandırması kimliğe bürünme için hazır olduğundan (aşağıya bakın), HiveServer2 uygulamasının gerçekleştirilmesini bekledim kullanıcı olarak sorgula. Yine de, HDFS kullanıcı alanımda izinleri olmayan hive
kullanıcı kullanıyor. Bir tablo oluşturmak Örneğin
:
hive-site.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
ilgili yapılandırma parametreleri İlişkin
> 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)
)
, bu benim yapılandırma (gibi basitleştirilmiş, değil XML) 'dir
core-site.xml
:
hadoop.proxyuser.hive.groups=*
hadoop.proxyuser.hive.hosts=*
Özel Hive authenticator sağlayıcı kodu here'a bakabilirsiniz. Ben
herkes lütfen bana yardım edebilir
Hive 0.13.0 kullanıyorum?
http://doc.mapr.com/display/MapR/Hive+User+Impersonation bu 'hadoop.proxyuser..' özellikler ayarlanır? – franklinsijo
'hadoop.proxyuser ...' ayarları, core-site.xml' içinde bulunur. Diğerleri ise kovan-site.xml'de. Özel auth sağlayıcısından erişilebilir olduklarını kontrol ettim. – frb
@frb Değişiklikleri yaptıktan sonra hiveserver2'yi yeniden başlattınız mı? – Marco99