(解決)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太陽

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM