錯誤: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>


免責聲明!

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



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