【问题标题】:Kerberized Hadoop Hive Beeline access issueKerberized Hadoop Hive Beeline 访问问题
【发布时间】:2016-01-16 08:36:53
【问题描述】:

我正在尝试通过 beeline 让 hiveserver2 与 kerberized HDP 2.3 集群一起使用。我在亚马逊 ec2 上。

一旦我获得可更新的票证,我就可以执行 hdfs 操作并启动 mr 作业..

即使 hive cli 不是通过 hive 服务器 2.. 也可以正常工作..

当我尝试通过 beeline 连接时..我收到一个关于 no tgt found 的错误..当我在启动 beeline 命令之前实际上有它时

我以自己的用户身份获得票证.. 但我使用 hive/@ 作为主体..

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

很多文章只建议在启动beeline之前更新令牌..没有用

一篇文章建议对 hive 元存储使用不同的主体和密钥表……没有用

Sasl 已按照建议启用

这里是 /etc/krb5.配置:

[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

门票详情:

$ 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

hive 服务器 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

【问题讨论】:

    标签: hadoop hive kerberos hortonworks-data-platform


    【解决方案1】:

    就我而言,我能够从一台服务器连接 HS2,但无法从另一台服务器连接。

    我发现直线版本存在问题。

    有问题的服务器直线版本:

    >beeline --version
    Beeline version 2.3.9 by Apache Hive```
    

    可以连接HS2服务器直线版:

    >beeline --version
    Beeline version 3.1.3000.7.1.7.0-551 by Apache Hive
    

    我更改了直线实用程序路径并能够连接 HS2

    [airflow@hostname bin]$ which beeline
    /usr/local/bin/beeline
    [airflow@hostname bin]$ cd /bin
    [airflow@hostname bin]$ ./beeline -u "jdbc:hive2://$HOSTNAME:10000/default;principal=hive/$HOSTNAME@DEV.DCOE;
    

    【讨论】:

      【解决方案2】:

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

      使用 klist 命令查看到期日期和时间。如果授权。已过期,请使用 kinit 命令更新授权。

      【讨论】:

        【解决方案3】:

        我遇到了类似的问题,我已通过将 HIVE_CONF_DIR 变量设置为指向 hive-conf 来修复它。

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

        【讨论】:

          【解决方案4】:

          好的解决方案是,在您的系统上执行 mkdir 以下 /etc/hadoop/conf/ 并在 core-site.xml 下添加这个设置

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2023-03-29
            • 1970-01-01
            • 1970-01-01
            • 2014-02-15
            • 2014-04-14
            • 1970-01-01
            • 2018-08-30
            • 1970-01-01
            相关资源
            最近更新 更多