不允许用户冒充匿名(state=08S01,code=0)org.apache.hadoop.security.authorize.AuthorizationException

Mag*_*dus 3 hadoop hive beeline

当我尝试使用 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)
Run Code Online (Sandbox Code Playgroud)

我使用的用户名是deco

我还在 core-site.xml 文件中添加了以下条目:

<property>
    <name>hadoop.proxyuser.deco.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.deco.groups</name>
    <value>*</value>
</property>
Run Code Online (Sandbox Code Playgroud)

我仍然无法使用直线连接。我使用了以下命令:

$HIVE_HOME/bin/beeline -u jdbc:hive2://localhost:10000
Run Code Online (Sandbox Code Playgroud)

$HIVE_HOME/bin/beeline -n $(whoami) -u jdbc:hive2://localhost:10000
Run Code Online (Sandbox Code Playgroud)

我什至备份了 Metastore_db 文件夹并使用以下命令重新启动:

$HIVE_HOME/bin/schematool -dbType derby -initSchema
Run Code Online (Sandbox Code Playgroud)

我什至在 10001 端口上启动 hiveserver2 并将直线连接到 10001 ,但仍然遇到相同的错误

以上一切都证明是徒劳的。

救救我快死了

Joe*_*ing 10

我曾经遇到过这个错误

\n\n
\n

用户 * 不允许冒充匿名

\n
\n\n

这是因为默认情况下 hive 尝试以调用用户的身份执行操作,我将以下几行添加到 hive 配置文件 conf/hive-site.xml 中,要求 hive 以 hiveserver2 进程用户的身份执行操作,然后摆脱它错误:

\n\n
  <property>\n    <name>hive.server2.enable.doAs</name>\n    <value>false</value>\n    <description>\n      Setting this property to true will have HiveServer2 execute\n      Hive operations as the user making the calls to it.\n    </description>\n  </property>\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是文件

\n\n
\n

冒充

\n\n

默认情况下,HiveServer2 以提交查询的用户身份执行查询处理。但如果以下参数设置为 false,则查询将以 hiveserver2 进程运行的用户身份运行。

\n\n

hive.server2.enable.doAs \xe2\x80\x93 模拟连接的用户,默认\n true。

\n
\n