Kerberized Hadoop Hive直线访问问题

时间:2015-10-17 18:17:47

标签: hadoop hive kerberos hortonworks-data-platform

我试图通过beeline获得hiveserver2与kerberized HDP 2.3群集一起工作。我在亚马逊ec2上。

一旦我获得可更新的机票,我就可以执行hdfs操作并启动先前的工作......

即使hive cli不是通过配置单元服务器2 ..那也可以。

当我尝试通过beeline连接时...我发现没有找到tgt的错误..当我实际上它已经发送直线命令

我将票作为我自己的用户..但我正在使用hive / @作为校长..

只是为了测试我尝试使用hives自己的keytab来获取票证..但没有用..

许多文章只建议在发布直线之前更新令牌..没有用

有一篇文章建议使用不同的主体和密钥表来进行蜂巢式分布......不起作用

按建议启用Sasl

这是/ etc / krb5。 CONF:

[logging]

default = FILE:/var/log/krb5libs.log

kdc = FILE:/var/log/krb5kdc.log

admin_server = FILE:/var/log/kadmind.log



[libdefaults]

default_realm = ABC.COM

dns_lookup_realm = false

dns_lookup_kdc = false

ticket_lifetime = 30m

renew_lifetime = 10h

forwardable = true

udp_preference_limit = 1



[realms]

ABC.COM = {

kdc = localhost

admin_server = localhost

default_principal_flags = +renewable

max_renewable_life = 7d 0h 0m 0s

}



[domain_realm]

.abc.com = ABC.COM

abc.com = ABC.COM

TicketDetails:

$ klist -f
Ticket cache: FILE:/tmp/krb5cc_500
Default principal: ec2-user@ABC.COM

Valid starting Expires Service principal
10/17/15 13:40:26 10/17/15 14:10:26 krbtgt/ABC.COM@ABC.COM
renew until 10/17/15 23:04:27, Flags: FRIT

$ date
Sat Oct 17 13:41:02 EDT 2015

直线连接字符串是:

!connect jdbc:hive2://<hive_host>:10000/default;principal=hive/ip-<hive_host>.ec2.internal@ABC.COM

配置单元服务器2的netstat输出:

$ sudo netstat -tunlp | grep 10000
tcp 0 0 0.0.0.0:10000 0.0.0.0:* LISTEN 11272/java

我曾尝试将它绑定到私人IP ..同样的结果..

来自直线的全部痕迹

Error: Could not open client transport with JDBC Uri: jdbc:hive2://<hive_host>:10000/default;principal=hive/ip-<hive_host>.ec2.internal@ABC.COM: GSS initiate failed (state=08S01,code=0)
0: jdbc:hive2://<hive_host>:10000/default (closed)> 15/10/17 13:06:14 [main]: ERROR transport.TSaslTransport: SASL negotiation failure
javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]
at com.sun.security.sasl.gsskerb.GssKrb5Client.evaluateChallenge(GssKrb5Client.java:212)
at org.apache.thrift.transport.TSaslClientTransport.handleSaslStartMessage(TSaslClientTransport.java:94)
at org.apache.thrift.transport.TSaslTransport.open(TSaslTransport.java:271)
at org.apache.thrift.transport.TSaslClientTransport.open(TSaslClientTransport.java:37)
at org.apache.hadoop.hive.thrift.client.TUGIAssumingTransport$1.run(TUGIAssumingTransport.java:52)
at org.apache.hadoop.hive.thrift.client.TUGIAssumingTransport$1.run(TUGIAssumingTransport.java:49)
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:1657)
at org.apache.hadoop.hive.thrift.client.TUGIAssumingTransport.open(TUGIAssumingTransport.java:49)
at org.apache.hive.jdbc.HiveConnection.openTransport(HiveConnection.java:210)
at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:180)
at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:187)
at org.apache.hive.beeline.DatabaseConnection.connect(DatabaseConnection.java:142)
at org.apache.hive.beeline.DatabaseConnection.getConnection(DatabaseConnection.java:207)

对我遗失的内容有任何建议吗?

KMS是Ranger KMS

3 个答案:

答案 0 :(得分:0)

确定解决方案是,在你的系统上做mkdir以下/ etc / hadoop / conf / 并使用此设置将其添加到core-site.xml下

<configuration>  <property>
      <name>hadoop.security.authentication</name>
      <value>kerberos</value>
    </property> </configuration>

这看起来像直线问题?即使我们可以在命令行上指定auth = kerberos,它仍然需要这个(至少对我有用)!我使用Ubuntu os。

答案 1 :(得分:0)

我遇到了类似的问题,我通过将conda install --channel https://conda.anaconda.org/RMG graphviz` conda install --channel https://conda.anaconda.org/RMG pydot 变量设置为指向hive-conf来修复它。

我尝试此操作的节点不是Hadoop集群的一部分,而是一个临时节点,它在HIVE_CONF_DIR中没有配置。 http://blog.godatadriven.com/beeline-client-secured-cluster.html也有我需要的信息。

答案 2 :(得分:0)

如果kerberos身份验证失败,将发生“GSS启动失败”异常。在尝试建立连接之前,请确保您已经更新了身份验证。

使用klist命令检查到期日期和时间。如果认证。已过期,请使用kinit命令续订身份验证。