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

在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,

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

### Beeline 连接 Hive 出现 JNI 错误的原因分析与解决方案 当通过 Beeline 客户端连接 Hive 数据库,如果遇到 JNI(Java Native Interface)错误,通常是因为环境配置不正确或者某些必要的依赖项缺失所致。 #### 1. JAR 文件缺失或版本冲突 Hadoop 缺少 `hive-jdbc-*.jar` 文件可能导致无法正常加载 JDBC 驱动程序。此问题可以通过将 Hive 安装目录下 lib 文件夹中的 `hive-jdbc-3.1.2.jar` 复制到 Hadoop 安装路径下的 `\share\hadoop\common\lib` 中来解决[^1]。确保所使用的 jar 版本与当前 Hive 和 Hadoop 的版本兼容非常重要。 #### 2. YARN 日志排查 在尝试修复之前,建议先查看 YARN ResourceManager 上的日志以获取更详细的错误信息。这有助于定位具体问题是由于资源管理器还是其他组件引起的。可以在 YARN Resource Manager 作业界面上查询对应 Hive SQL MR Job 的日志记录[^2]。 #### 3. Schema 元数据处理不当引发的潜在问题 对于一些复杂的 SQL 查询操作,尤其是涉及大数据量表的操作,可能会因为 Hive 对于复杂结构化数据的支持不足而导致性能下降甚至失败。这是因为 Hive 并不会自动存储完整的元数据信息,在扩展 schema 方面也较为受限——仅允许追加新字段至现有模式之后[^3]。这种局限性可能间接影响到基于这些表执行的外部调用过程,比如通过 Beeline 使用特定参数访问触发异常情况。 #### 综合解决办法 为了彻底解决问题并防止未来再次发生类似状况,请按照如下指导调整设置: - **确认所有必需JAR包已正确定位**:检查是否有最新版且匹配目标平台需求的相关类库被加入classpath; - **验证CLASSPATH变量定义无误**:保证启动脚本里包含了指向上述提到的关键文件位置的信息; - **优化Schema设计减少不必要的转换开销**:尽量简化表格间关系模型,避免过多嵌套层次以及频繁变更列属性的行为; 以下是用于测试连接的一个简单Python脚本例子: ```python import jaydebeapi conn = jaydebeapi.connect('org.apache.hive.jdbc.HiveDriver', 'jdbc:hive2://localhost:10000/default;auth=noSasl', ['username', 'password'], '/path/to/hive-jdbc-all-<version>.jar') curs = conn.cursor() curs.execute('SELECT * FROM your_table LIMIT 10') results = curs.fetchall() print(results) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值