簡體   English   中英

Kerberized Hadoop Hive Beeline 訪問問題

[英]Kerberized Hadoop Hive Beeline access issue

我正在嘗試通過直線使 hiveserver2 與 kerberized HDP 2.3 集群一起工作。 我在亞馬遜ec2。

一旦我得到一張可更新的票,我就可以執行 hdfs 操作並啟動先生工作..

即使 hive cli 不是通過 hive server 2 .. 那也能正常工作..

當我嘗試通過 beeline 連接時.. 我在沒有找到 tgt 時遇到錯誤.. 當我在啟動 beeline 命令之前實際擁有它時

我以自己的用戶身份獲得票證..但我使用 hive/@ 作為主體..

只是為了測試,我也嘗試使用 hives 自己的 keytab 來獲取票證..沒有用..

很多文章只建議在啟動直線之前更新令牌..沒有用

一篇文章建議對 hive Metastore 使用不同的主體和密鑰表......沒有用

按照建議啟用 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

門票詳情:

$ 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 上......同樣的結果......

來自 Beeline 的完整軌跡

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

好的解決方案是,在您的系統上執行mkdir以下/ etc / hadoop / conf /,並使用此設置將其添加到core-site.xml下

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

這看起來像直線問題? 即使我們可以在命令行上指定auth = kerberos,它仍然需要這個(至少對我有用)! 我使用Ubuntu操作系統。

我遇到了類似的問題,並且通過將HIVE_CONF_DIR變量設置為指向hive-conf來解決此問題。

我嘗試過的節點不是Hadoop集群的一部分,而是一個臨時節點,並且在/etc沒有配置。 http://blog.godatadriven.com/beeline-client-secured-cluster.html也有我需要的信息。

如果Kerberos身份驗證失敗,將發生“ GSS初始化失敗”異常。 在嘗試建立連接之前,請確保已更新身份驗證。

使用klist命令檢查到期日期和時間。 如果認證。 已過期,請使用kinit命令續訂身份驗證。

就我而言,我能夠從一台服務器連接 HS2,而無法從另一台服務器連接。

因為我發現了直線版本的問題。

有問題的服務器直線版本:

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

能夠連接HS2服務器Beeline版本:

>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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM