1. 程式人生 > 其它 >【Hive】beeline連線報錯 root is not allowed to impersonate root (state=08S01,code=0)

【Hive】beeline連線報錯 root is not allowed to impersonate root (state=08S01,code=0)

技術標籤:hivelinuxhadoophdfs大資料

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