hadoop - 不允许用户冒充匿名 (state=08S01,code=0) org.apache.hadoop.security.authorize.AuthorizationException
问题描述
当我尝试使用 hiverserver2 启动 Hive 时出现以下错误。
Connecting to jdbc:hive2://localhost:10000
18/10/25 09:45:38 [main]: WARN jdbc.HiveConnection: Failed to connect to localhost:10000
Error: Could not open client transport with JDBC Uri: jdbc:hive2://localhost:10000: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: deco is not allowed to impersonate anonymous (state=08S01,code=0)
我使用的用户名是deco。
我还在 core-site.xml 文件中添加了以下条目:
<property>
<name>hadoop.proxyuser.deco.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.deco.groups</name>
<value>*</value>
</property>
我仍然无法使用直线连接。我使用了以下命令:
$HIVE_HOME/bin/beeline -u jdbc:hive2://localhost:10000
和
$HIVE_HOME/bin/beeline -n $(whoami) -u jdbc:hive2://localhost:10000
我什至备份了 metastore_db 文件夹并使用以下命令重新启动:
$HIVE_HOME/bin/schematool -dbType derby -initSchema
我什至在 10001 端口上启动 hiveserver2 并将直线连接到 10001 并且仍然遇到相同的错误
以上都证明是徒劳的。
帮助我快死了
解决方案
我曾经遇到过这个错误
用户 * 不允许冒充匿名
这是因为默认情况下 hive 尝试以调用用户身份执行操作,我在 hive 配置文件 conf/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 以提交查询的用户身份执行查询处理。但是如果以下参数设置为 false,则查询将以 hiveserver2 进程运行的用户身份运行。
hive.server2.enable.doAs – 模拟连接的用户,默认为 true。
推荐阅读
- powerbi - Power BI API - 按 ID 获取数据集
- android - 反向 AppBarLayout.ScrollingViewBehavior
- r - 将 SAS Proc Shewhart 转换为 R 编程
- php - mysqli_get_client_stats 是否向 sql server 发送请求
- printing - 修改与 gwbasic 一起使用的基本文件
- sql - 使用 django ORM 转换数据
- iphone - iPhone Xr 的刘海尺寸(以像素为单位)
- php - 如何在不重复代码的情况下根据变量更改 php if 语句?
- python - 在 python 中每次运行随机森林、非线性 SVC 和多项式 NB 时获得不同的准确度以进行文本分类
- r - 如何使用 ggplot 在 R 中绘制学生化残差和拟合值?