问题描述:
当我在使用hiveserver2启动hive的时候遇到报错问题:
[xeon@hadoop102 hive]$ bin/beeline -u jdbc:hive2://hadoop102:10000 -n xeon
Connecting to jdbc:hive2://hadoop102:10000
23/08/30 12:57:01 [main]: WARN jdbc.HiveConnection: Failed to connect to hadoop102:10000
Error: Could not open client transport with JDBC Uri: jdbc:hive2://hadoop102:10000: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: xeon is not allowed to impersonate xeon (state=08S01,code=0)
Beeline version 3.1.2 by Apache Hive
这里的错误说明了连接尝试失败。在这个错误中,关键信息是 “User: xeon is not allowed to impersonate xeon”,这表明用户 xeon 不被允许模拟另一个用户名 xeon。
这个错误通常涉及到 Hive 服务器的用户权限设置。它可能由以下原因导致:
-
Impersonation 模拟权限问题: Hive 配置中可能启用了用户模拟(impersonation)功能,允许一个用户模拟另一个用户来执行查询。然而,在这个错误中,用户 xeon 尝试模拟自己,这通常是不被允许的。
-
用户权限问题: 用户 xeon 可能没有足够的权限来连接到 Hive 服务器,或者执行特定的操作。
解决方案:
因为默认情况下 hive 尝试以调用用户身份执行操作,所以可以在配置文件 hive-site.xml 中添加以下行,要求 hive 作为 hiveserver2 进程用户执行操作,然后摆脱这个错误:
<property>
<name>hive.server2.enable.doAs</name>
<value>false</value>
<description>
Setting this property to true will have HiveServer2 execute
Hive operations as the user making the calls to it.
</description>
</property>
更改完配置文件后,重启hiveserver2,再执行
bin/beeline -u jdbc:hive2://hadoop102:10000 -n xeon
即可正常启动hive。