错误:hive中beeline连接异常User:*** is not allowed to impersonate

hive中beeline连接异常User:*** is not allowed to impersonate

1.报错详情

在beeline连接Hive的过程中出现了下面这种情况:

image-20220108170721016

导致报错命令为:

 bin/beeline -u jdbc:hive2://hadoop01:10000 -n root

2.解决方法

在hadoop目录下/etc/hadoop/core-site.xml加入配置后重启hadoop集群:(root处是报错的用户名)

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

3.引用

Hadoop2.0版本开始支持ProxyUser的机制。含义是使用User A的用户认证信息,以User B的名义去访问hadoop集群。对于服务端来说就认为此时是User B在访问集群,相应对访问请求的鉴权(包括HDFS文件系统的权限,YARN提交任务队列的权限)都以用户User B来进行。

假设superuser 用户名 super,想替用户 joe提交任何和访问hdfs。superuser 有 kerberos 凭据,但是用户 joe 没有。任务需要以用户joe运行,对namenode上任何文件的访问也必须以用户joe完成。需要用户joe可以借助super的kerberos凭据建立连接连到namenode或job tracker。换个说法,super正在 impersonating (模拟)用户joe

通过在 core-site.xml 作如下设置,superuser super 可以并仅可以从 host1 和 host2 来模拟属于 group1 和 group2的用户:

<property>
     <name>hadoop.proxyuser.super.hosts</name>
     <value>host1,host2</value>
</property>
<property>
     <name>hadoop.proxyuser.super.groups</name>
     <value>group1,group2</value>
</property>

在解决方法中,安全要求不高,通配符*可以用于来自任何主机或任何用户的 impersonation (模拟),来自任意主机的用户root 可以 impersonate (模拟)属于任意组的任何用户,此处不需要模拟用户,但是为root用户创建了自己的认证信息,root用户也就拥有了去hadoop集群上访问的权限:

<property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
</property>
<property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
</property>
posted @ 2022-01-08 17:36  wotoo  阅读(1670)  评论(0编辑  收藏  举报