Hive 代理用户(Impersonation)权限异常

0 阅读1分钟

报错-

User: db2305070135 is not allowed to impersonate db2305070135

image.png

📌 错误根源

这是 HiveServer2 的 hive.server2.enable.doAs 配置导致的:

  • 该配置默认值为 true,表示配置允许哪些用户可以代理自己 / 其他用户,否则会抛出 AuthorizationException。
  • 端口 10000 已监听,说明 HiveServer2 本身运行正常,只是权限配置问题

✅ 两种解决方法(任选其一)

方法1:关闭 doAs(测试环境推荐,最快捷)

# 编辑 hive-site.xml,添加或修改以下配置
vim $HIVE_HOME/conf/hive-site.xml

添加:

<property>
  <name>hive.server2.enable.doAs</name>
  <value>false</value>
</property>

重启 HiveServer2:

kill -9 $(ps -ef | grep HiveServer2 | grep -v grep | awk '{print $2}')
hive --service hiveserver2 &

之后即可正常连接。

方法2:保留 doAs (生产环境规范)

1. 修改hive配置,来配置代理权限

hive-site.xml 中添加代理配置:

# 打开配置文件
nano /usr/local/apache-hive-3.1.3-bin/conf/hive-site.xml

# 在里面添加以下内容(指定允许什么用户代理自己)
<property>
  <name>hive.server2.proxy.user.hosts</name>
  <value>*</value>
</property>
<property>
  <name>hive.server2.proxy.user.users</name>
  <value>*</value>
</property>
<property>
  <name>hive.server2.proxy.user.groups</name>
  <value>*</value>
</property>
2. 修改 Hadoop 配置(更规范,生产环境推荐)

core-site.xml 中添加代理配置:

# 打开 core-site.xml:
nano /usr/local/hadoop-3.3.4/etc/hadoop/core-site.xml

# 添加代理用户配置(允许你的用户代理自己):
<property>
    <name>hadoop.proxyuser.db2305070135.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.db2305070135.groups</name>
    <value>*</value>
</property>

重启 HiveServer2 后,即可允许用户模拟自己或其他用户。


🔍 验证修复

修复后执行:

beeline -u jdbc:hive2://localhost:10000 -n db2305070135

✅ 成功标志:进入 beeline 交互界面,不再报 AuthorizationException,可执行 show databases;。 ✅执行成功结果:

image.png

💡 总结

  • 服务状态:HiveServer2 已正常启动(端口 10000 监听)✅
  • 问题本质:Hive 安全代理权限未配置,不是服务故障
  • 修复后即可正常使用 beeline 或 DolphinScheduler 连接 Hive