报错描述:
初学hive配置,在进行远程模式配置时,node02启动了hiveserver2,然后在node03上用
beeline -u jdbc:hive2://node02:10000 -n xx -p xxx
进行链接时,报错 root is not allowed to impersonate root anonymous
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/export/servers/apache-hive-2.3.9-bin/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/export/servers/hadoop-2.7.4/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://node02:10000
22/09/19 16:28:31 [main]: WARN jdbc.HiveConnection: Failed to connect to node02:10000
Error: Could not open client transport with JDBC Uri: jdbc:hive2://node02: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 anonymous (state=08S01,code=0)
Beeline version 2.3.9 by Apache Hive
解决方案:
在到网上查了一下资料,都是清一色的在hadoop的core-site.xml文件中加入以下配置(其中root需要替换成你使用beeline命令时-n指定的值):
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
但是试过之后还是不能连接,继续找答案,终于在
http://www.manongjc.com/detail/25-jwxiitmwxxpyncm.html
https://www.cnblogs.com/yangji0202/p/15012449.html
找到解决办法是,在node02(hive的远程配置中,作为服务端的机器)上,在hive安装目录的conf/hive-site.xml中加入以下配置:
<property>
<name>hive.server2.enable.doAs </name>
<value>false</value>
</property>
此方法来自于hive的官方文档
https://cwiki.apache.org/confluence/display/Hive/Setting+Up+HiveServer2
转载来源:
https://www.cnblogs.com/yangji0202/p/15012449.html