(解决)dbeaver连接hive报错:User: hadoop is not allowed to impersonate XXX

这个坑肯可能是在java操作hive 和 python操作hive都会遇到的配置问题

如下解决方法:

1.配置 hive-site.xml

<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hadoop</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>passwd</value>

</property> 

# 这里用户名为什么是hadoop,因为我用用户“hadoop”启动的集群,

# passwd是用户设定的密码, 具体原理(“即你用哪个linux用户启动hadoop,对应的用户也就成为hadoop的内部用户,如下图我的linux用户为root,对应的hadoop中用户也就是root”,详细参考源:https://blog.csdn.net/qq_16633405/article/details/82190440

<property> 
<name>hive.server2.thrift.port</name> 
<value>10000</value> 
</property>
<property>
<name>hive.server2.thrift.bind.host</name>
<value>localhost</value>
</property>

<property>
<name>hive.server2.enable.doAs</name>
<value>false</value>

# 这应该是设置hiverserver2 绑定的host和port, 通过dbeaver通过jdbc driver访问hive, url模板:jdbc:hive2://{host}[:{port}][/{database}]   最后的:hive.server2.enable.doAs,忘了啥意思了,卡了好久病急乱投医了。。。

2. 配置 hadoop的 core-site.xml

配置  hadoop/etc/hadoop/  目录下的core-site.xml:

添加如下xml代码,红色的hadoop对应的就是 上面 hive-site.xml配置的 username, 我看网上大部分都是root,估计是hadoop是在root下启动的,我hadoop所属都是用户hadoop(作为一个菜鸡只能这么猜测了)

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

3. 启动hiveserver2

hive --service hiveserver2 -hiveconf hive.server2.thrift.port=10000 

# 这个hive.server2.thrift.port=10000  在 hive-site.xml中配置了,这应该不用代参数了

4. 启动 hadoop

  cd /hadoop/sbin/

  start-all.sh

5. dbeaver测试连接 hive

  下载对应hive版本的jdbc jar包(我的hive是3.1.1, 网上找的3.1.1 , hive jdbc下载链接在这, 如何看hive版本? 参照),以及推荐的jdbc jar包,配置主机、用户名和密码,模式/数据库可以不填, 测试完成(沃尼玛,终于解决了)

  

在此感谢 :https://blog.csdn.net/qq_16633405/article/details/82190440 博主:春雨里de太阳

 
原文地址:https://www.cnblogs.com/HankCui/p/11638984.html