錯誤定位
最近給hadoop集群配置了kerberos認證,之后準備配置sentry進行權限管理瞳脓。安裝并啟用sentry服務后需要在beeline進行Grant等授權操作缺亮。
Note that since Hive CLI does not work with HiveServer2, it cannot be used to configure Sentry permissions.
在啟用sentry之前基本都用的Hive CLI,所以也沒有注意到beeline的問題晚吞,在嘗試進行連接后beeline出現(xiàn)錯誤:
Error: Could not open client transport with JDBC Uri: jdbc:hive2://test-1:10000/default;: Peer indicated failure: Unsupported mechanism type PLAIN (state=08S01,code=0)
出現(xiàn)這個錯誤是因為連接時沒有提供kerberos的principal信息
應該如下進行連接:
!connect jdbc:hive2://localhost:10000/default;principal=hive/HiveServer2Host@YOUR-REALM.COM
但是仍出現(xiàn)錯誤:
Error: Could not establish connection to jdbc:hive2://test-1:10000/default;principal=hive/test-1@JUNIORCHINA.COM: Required field 'client_protocol' is unset! Struct:TOpenSessionReq(client_protocol:null, configuration:{use:database=default}) (state=08S01,code=0)
針對這個錯誤延旧,在網(wǎng)上搜到了這樣的結果
https://issues.apache.org/jira/browse/HIVE-6050
確認是beeline client的版本比hiveserver2的版本要高
之后檢查jar包
CLASSPATH中/opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.30/jars/hive-jdbc-0.13.1-cdh5.3.0.jar
和lib中/opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.30/lib/hive/lib/hive-jdbc-0.13.1-cdh5.3.0.jar的jar包版本都對
無果。
最后留意到登錄beeline后顯示
Beeline version 1.5.2 by Apache Hive
beeline>
在其他節(jié)點登錄beeline時顯示
Beeline version 0.13.1-cdh5.3.0 by Apache Hive
beeline>
終于確定問題所在
解決
用其他節(jié)點客戶端登錄槽地,或者更換beeline版本