hive JDBC連接總結


1、 問題:拒絕連接

解決方法:hiveserver2 連接異常,重啟(hiveserver2連接比較慢要等一會)

我這里兩個RunJar是啟動了meatestore和hiveserver2

2、 user:duoduo is not allowed impersonate hadoop100

這個duoduo,是我的登錄的用戶,hive的用戶和所屬組都是duoduo

解決方法:

在hadoop的配置文件core-site.xml增加如下配置,重啟hdfs


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

完美解決:

此圖像的alt屬性為空;文件名為image-9.png

其中username和password都為duoduo

不管是root,還是duoduo用戶都可以登錄,可以肯定與用戶無關

注意:

將配置換成Hadoop100或者hive

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

無論換成什么都是duoduo用戶不不能模擬hadoop100

2.1 驗證某些博客1是hive-site.xml里面的不對:

驗證:我的hive-site.xml

這個用戶名和密碼是元數據mysql的用戶名和密碼

2.2 驗證某些博客2是主機名的不對:

驗證:我的主機名是Hadoop100

2.3 驗證要帶上庫名字不然會報錯的

驗證:毛關系沒有

3、代理用戶

在hadoop的core-site.xml中進行如下設置, 用戶“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>

當然,也可以進行更松弛的設置。如下所示表示用戶“oozie”可以代理所有主機上的所有用戶

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

3.1 ProxyUser介紹和應用場景

Hadoop2.0版本開始支持ProxyUser的機制。含義是使用User A的用戶認證信息,以User B的名義去訪問hadoop集群。對於服務端來說就認為此時是User B在訪問集群,相應對訪問請求的鑒權(包括HDFS文件系統的權限,YARN提交任務隊列的權限)都以用戶User B來進行。User A被認為是superuser(這里super user並不等同於hdfs中的超級用戶,只是擁有代理某些用戶的權限,對於hdfs來說本身也是普通用戶),User B被認為是proxyuser。

在Hadoop的用戶認證機制中,如果使用的是Simple認證機制,實際上ProxyUser的使用意義並不大,因為客戶端本身就可以使用任意用 戶對服務端進行訪問,服務端並不會做認證。而在使用了安全認證機制(例如Kerberos)的情況下,ProxyUser認證機制就很有作用:

  1. 用戶的管理會比較繁瑣,每增加一個新的用戶,都需要維護相應的認證信息(kerberosKeyTab),使用ProxyUser的話,只需要維護少量superuser的認證信息,而新增用戶只需要添加proxyuser即可,proxyuser本身不需要認證信息。
  2. 通常的安全認證方式,適合場景是不同用戶在不同的客戶端上提交對集群的訪問;而實際應用中,通常有第三方用戶平台或系統會統一用戶對集群的訪問,並 且執行一系列任務調度邏輯,例如Oozie、華為的BDI系統等。此時訪問集群提交任務的實際只有一個客戶端。使用ProxyUser機制,則可以在這一 個客戶端上,實現多個用戶對集群的訪問。

使用ProxyUser訪問hadoop集群,訪問請求的UGI對象中實際包含了以下信息:

  1. proxyUser用戶名
  2. superUser用戶名
  3. superUser的認證信息(kerberos等安全認證模式下) 而非ProxyUser方式訪問,UGI中只包含了普通用戶及其認證信息。 通過ProxyUser方式訪問hadoop集群,認證鑒權流程如下:

  1. 對SuperUser進行認證,在Simple認證模式下直接通過認證,在Kerberos認證模式下,會驗證ticket的合法性。
  2. 代理權限認證,即認證SuperUser是否有權限代理proxyUser。這里權限認證的邏輯的實現可以通過 hadoop.security.impersonation.provider.class參數指定。在默認實現中通過一系列參數可以指定每個 SuperUser允許代理用戶的范圍。
  3. 訪問請求鑒權,即驗證proxyUser是否有權限對集群(hdfs文件系統訪問或者yarn提交任務到資源隊列)的訪問。這里的鑒權只是針對 proxyUser用戶而已經與SuperUser用戶無關,及時superUser用戶有權限訪問某個目錄,而proxyUser無權限訪問,此時鑒權 也會返回失敗。

3.2 ProxyUser的使用和相關配置

ProxyUser對象通過UserGroupInformation.createProxy(“proxyUser”,superUgi)來創建,訪問集群時通過proxyUser.doAs方式進行調用。

     // 創建superUser用戶
    UserGroupInformation superUser = UserGroupInformation.getCurrentUser();
    //創建proxyUser用戶
    UserGroupInformation proxyUgi = UserGroupInformation.createProxyUser(“proxyUser”, superUser);
    // 使用proxyUser用戶訪問集群
    proxyUgi.doAs(new PrivilegedExceptionAction<Void>() {
    @Override
    public Void run() throws Exception {
    // 使用proxy用戶訪問hdfs
    FileSystem fs = FileSystem.get(conf);
    fs.mkdirs(new Path(“/proxyUserDir”));
    // 使用proxy用戶提交mr作業
    JobClient jc = new JobClient(conf);

    jc.submitJob(conf);

      return null;
      }
    });

服務端需要在NameNode和ResourceManager的core-site.xml中進行代理權限相關配置。 對於每一個superUser用戶,配置參數:

對於每個superUser用戶,hosts必須進行配置,而groups和users至少需要配置一個。

這幾個配置項的值都可以使用*來表示允許所有的主機/用戶組/用戶。

例如:

<property>
<name>hadoop.proxyuser.userA.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.userA.users</name>
<value>user1,user2</value>
</property>

表示允許用戶userA,在任意主機節點,代理用戶user1和user2

代理用戶權限相關配置的改動,需要修改core-site.xml文件中相關配置。修改后配置並不會自動更新到服務器(這與fair- scheduler.xml配置會自動更新不同)。修改配置后需要執行以下命令進行同步,分別將信息更新到namenode和 resourcemananger上。

參考1:https://www.jianshu.com/p/a27bc8651533
參考2:https://blog.csdn.net/u012948976/article/details/49904675
官網:https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/Superusers.html


免責聲明!

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



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