[英]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.