2017-03-01 17 views
8

Ö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

?

+0

http://doc.mapr.com/display/MapR/Hive+User+Impersonation bu 'hadoop.proxyuser..' özellikler ayarlanır? – franklinsijo

+0

'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

+0

@frb Değişiklikleri yaptıktan sonra hiveserver2'yi yeniden başlattınız mı? – Marco99

cevap

0

Lütfen "hive.metastore.execute.setugi" öğesinin, sırasıyla adım 1 ve adım 2'de HiverServer2 ana bilgisayar düğümünde ve Hive Metastore ana bilgisayar düğüm (ler) inde true olarak ayarlanmış olup olmadığını kontrol edin. Bu özelliğin istemci/ağ geçidi düğümleri, HiverServer2 ve Hive Metastore ana bilgisayar düğümlerinde ayarlanması gerektiğini unutmayın.

Referans:

+0

'hive.metastore.execute.setugi'," true "in" hive-site.xml "olarak ayarlanmış. Bu özellik dosyaları, Hive Client, HiveServer2, Hive Metastore ve MySQL sunucusunu çalıştıran düğümde bulunur, böylece tüm bu hizmetlere erişilebilir. – frb

İlgili konular