root用户启动beeline时报错User: root is not allowed to impersonate root (state=,code=0)

本文详细介绍了如何在Hadoop中配置超级代理,通过修改core-site.xml文件,允许指定用户作为超级代理操作Hadoop资源。这解决了Hadoop安全机制下上层系统无法直接传递实际用户的问题。

在hadoop/etc/hadoop/core-site.xml里加上下面的配置文件,重启hdfs,其中“xxx”是连接beeline的用户,将“xxx”替换成自己的用户名root即可

<property>
        <name>hadoop.proxyuser.xxx.hosts</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.xxx.groups</name>
        <value>*</value>
    </property>

“*”表示可通过超级代理“xxx”操作hadoop的用户、用户组和主机

 

问题解决后将网上的资料总结一下:

主要原因是hadoop引入了一个安全伪装机制,使得hadoop 不允许上层系统直接将实际用户传递到hadoop层,而是将实际用户传递给一个超级代理,由此代理在hadoop上执行操作,避免任意客户端随意操作hadoop,如下图:

图上的超级代理是“Oozie”,本人的超级代理是“root”

参考:http://dongxicheng.org/mapreduce-nextgen/hadoop-secure-impersonation/

 转自:https://blog.youkuaiyun.com/yunyexiangfeng/article/details/60867563,

此博客不做商业用途,仅作自己学习,如原创者认为侵权,请联系删除

### 解决方案 当通过 Hive 的 JDBC 连接遇到 `AuthorizationException` 错误提示 `User: root is not allowed to impersonate root` ,通常是因为 Hadoop 和 HiveServer2 对用户代理权限进行了严格的控制。以下是详细的解决方案: #### 1. 修改 Hadoop 配置文件 core-site.xml 在 Hadoop 的核心配置文件 `core-site.xml` 中添加以下两个属性来允许用户 `root` 模拟其他用户[^3]: ```xml <property> <name>hadoop.proxyuser.root.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.root.groups</name> <value>*</value> </property> ``` - `<name>` 属性中的 `root` 是指代触发错误的用户名,在本例中为 `root`。 - `<value>*` 表示不限制主机或组范围;如果需要更严格的安全策略,可以替换为主机名列表或特定组。 #### 2. 重启 Hadoop 和 HiveServer2 服务 完成上述修改后,需重启 Hadoop 及其相关组件以及 HiveServer2 来使更改生效[^4]。 对于大多数集群环境而言,可以通过命令行执行如下操作: ```bash # 停止并启动HDFS/YARN服务 $ stop-dfs.sh && start-dfs.sh $ stop-yarn.sh && start-yarn.sh # 启动/停止Hive Server2 $ hive --service hiveserver2 & ``` #### 3. 测试连接 再次尝试使用 Beeline 或者其他客户端工具测试连接是否正常工作。例如运行下面Beeline指令验证连通性: ```sql !connect jdbc:hive2://your-hive-server-host:port/default; ``` 其中 `your-hive-server-host` 替换为目标服务器地址,而端口号一般默认设置成 `10000`. --- ### 注意事项 尽管以上措施能够有效解决问题,但在生产环境中建议谨慎处理此类安全设定调整。放宽代理限制可能带来潜在风险,因此推荐仅针对必要账户开放最小化权限而非采用泛匹配符(`*`)。 另外值得注意的是,不同版本间可能存在细微差异,请参照具体发行版文档确认兼容性和最佳实践指南[^5]. ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值