【Hive】beeline連線報錯 root is not allowed to impersonate root (state=08S01,code=0)
阿新 • • 發佈:2020-12-30
User: root is not allowed to impersonate root (state=08S01,code=0)
hive的客戶端連線服務使用metastore連線hiveserver2沒有出問題,而使用beeline連線hiveserver2卻出現如下問題
Error: Could not open client transport with JDBC Uri: jdbc:hive2://hadoop02:10000: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate root (state=08S01,code=0)
[root@hadoop01 lib]# beeline
which: no hbase in (.:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/vim82/bin:/usr/local/myJdk/bin:/usr/local/myJdk/lib:/usr/local/myHadoop/bin:/usr/local/myHadoop/sbin:/usr/local/hive/bin:/usr/local/python-3.7.3/bin:/usr/local/zookeeper/bin:/root/bin)
Beeline version 2.1.1 by Apache Hive
beeline> !connect jdbc:hive2://hadoop02:10000
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/hive/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/myHadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/ StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Connecting to jdbc:hive2://hadoop02:10000
Enter username for jdbc:hive2://hadoop02:10000: root
Enter password for jdbc:hive2://hadoop02:10000: ******
20/12/29 10:45:45 [main]: WARN jdbc.HiveConnection: Failed to connect to hadoop02:10000
Error: Could not open client transport with JDBC Uri: jdbc:hive2://hadoop02:10000: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate root (state=08S01,code=0)
查詢了網上的方法發現千篇一律,並沒有解決我的問題
在研究後將我的解決的方法分享給大家
首先在hive的伺服器端和客戶端兩個節點的core-site.xml配置檔案裡面加上下面的內容
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
然後將mysql-connector-java-5.1.28-bin.jar放入伺服器端和客戶端兩個節點的hive/lib下
mysql-connector-java-5.1.28-bin.jar
如此
再將RunJar程序殺死,重啟叢集就解決問題了
[root@hadoop01 lib]# beeline
which: no hbase in (.:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/vim82/bin:/usr/local/myJdk/bin:/usr/local/myJdk/lib:/usr/local/myHadoop/bin:/usr/local/myHadoop/sbin:/usr/local/hive/bin:/usr/local/python-3.7.3/bin:/usr/local/zookeeper/bin:/root/bin)
Beeline version 2.1.1 by Apache Hive
beeline> !connect jdbc:hive2://hadoop02:10000
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/hive/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/myHadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Connecting to jdbc:hive2://hadoop02:10000
Enter username for jdbc:hive2://hadoop02:10000: root
Enter password for jdbc:hive2://hadoop02:10000: ******
Connected to: Apache Hive (version 2.1.1)
Driver: Hive JDBC (version 2.1.1)
20/12/29 10:50:48 [main]: WARN jdbc.HiveConnection: Request to set autoCommit to false; Hive does not support autoCommit=false.
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://hadoop02:10000>
官方mysql-connector-java-5.1.28-bin.jar
mysql-connector-java-5.1.28-bin.jar