hive中beeline连接异常User:*** is not allowed to impersonate

匿名 (未验证) 提交于 2019-12-02 23:26:52

异常处理
Error: Could not open client transport with JDBC Uri: jdbc:hive2://hadoop01: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 (state=08S01,code=0)

hive是2.3.3版本

方法:
首先检查你的server端的hiveserver2 是否开启。

然后在beeline端的hadoop目录下/etc/hadoop/core-site.xml加入配置:

<property>


</property>
<property>


</property>


注意配置中的“root”代表的是一个用户,你异常中User后面的用户写的是哪个,你在这里就配置哪个。
hadoop.proxyuser.root.hosts 配置成*的意义,表示任意节点使用 hadoop 集群的代理用户 root 都能访问 hdfs 集群,hadoop.proxyuser.root.groups 表示代理用户的组所属。
如异常:User zhangsan is not allowed to impersonate…
就配置为:

<property>


</property>
<property>


</property>

然后在/etc/hadoop/hdfs-site.xml中加入配置:

<property>


</property>

以上的两个配置是因为:hadoop引入了一个安全伪装机制,使得hadoop 不允许上层系统直接将实际用户传递到hadoop层,而是将实际用户传递给一个超级代理,由此代理在hadoop上执行操作,避免任意客户端随意操作hadoop。hive2.3.3版本中必须要进行此配置,之前的版本不用配置好像也可以。

开启beeline:

beeline -u 'jdbc:hive2://hadoop01:10000/myhive' -n root


这里的“root”跟之前出现异常的用户相同,如果这里是zhangsan,就配置为:

beeline -u 'jdbc:hive2://hadoop01:10000/myhive' -n zahngsan

注意:这里的hadoop01是我的hive/conf/hive-site.xml中连接mysql配置的主机。
myhive是我储存hive元数据的database。
我的hive-site.xml配置为:

<configuration>















</configuration>


如果你这里写的是localhost,就写为:

beeline -u 'jdbc:hive2://localhost:10000/你配置存放元数据的database' -n 出现异常User后面的用户

最后,最后,最后,注意,重新启动hdfs,和yarn。
start-dfs.sh
start-yarn.sh

异常解决!!!

文章来源: https://blog.csdn.net/lm19770429/article/details/89307048
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!