Hive常見的報錯信息


             Hive常見的報錯信息

                                   作者:尹正傑

版權聲明:原創作品,謝絕轉載!否則將追究法律責任。

 

 

 

一.FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

1>.錯誤復現

2>.錯誤原因

  Metastore默認存儲在自帶的derby數據庫中,此時只需要去查看hive的安裝目錄是否有"derby.log(文件)""metastore_db(目錄)",若沒有則其實導致本報錯的直接原因。

  生產環境中,推薦使用MySQL存儲Metastore;

3>.解決方案

  參考我的部署筆記即可:
    https://www.cnblogs.com/yinzhengjie2020/p/13912307.html

 

二.FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: org.apache.hadoop.hive.ql.metadata.HiveException: MetaException(message:Hive metastore database is not initialized. Please use schematool (e.g. ./schematool -initSchema -dbType ...) to create the schema. If needed, don't forget to include the option to auto-create the underlying database in your JDBC connection string (e.g. ?createDatabaseIfNotExist=true for mysql))

1>.錯誤復現

2>.錯誤原因

  報錯很明顯了,說咱們未初始化元數據庫,這時需要我們手動進行初始化操作,它提示咱們使用schematool工具來進行初始化喲~

3>.解決方案

  既然知道故障原因,解決起來就好辦了,執行以下命令即可,而后重啟Hive客戶端。
    schematool -initSchema -dbType mysql

 

三.Error: Could not open client transport with JDBC Uri: jdbc:hive2://hadoop105.yinzhengjie.com:10000: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate jason (state=08S01,code=0)

1>.錯誤復現

2>.錯誤原因

  首先根據報錯信息估計大家也能猜出來問題定位在哪里了,我們只需要捕捉關鍵字"AuthorizationException",說明就是認證出問題了。而Hive是需要訪問Hadoop集群的,借助HDFS存儲數據,借助MR集群,借助YARN進行資源調度。

  綜上所述,我們需要為hive服務配置一個代理用戶(該代理用戶必須有權限訪問Hadoop集群喲~),其代表其他用戶的超級用戶。我們先來看看官方是如何處理的,而后在模仿解決即可。

  官方配置代理用戶案例:
    https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/Superusers.html

3>.解決方案

  如果連接失敗,請檢查Hadoop的核心配置文件是否缺少下面2行參數,若沒有請自行添加即可,添加后要重啟Hadoop集群,否則可能並不生效喲~
    [root@hadoop101.yinzhengjie.com ~]# vim ${HADOOP_HOME}/etc/hadoop/core-site.xml 
    ......
        <!-- 當配置Hive時需要使用下面2個參數喲 -->
        <property>
            <name>hadoop.proxyuser.root.hosts</name>
            <value>*</value>
            <description>指定超級用戶的代理主機,如果是"*"號,表示所有主機均可,此處的root對應的是root用戶,你可以根據實際情況來進行修改喲~</description>
        </property>

        <property>
            <name>hadoop.proxyuser.root.groups</name>
            <value>*</value>
            <description>指定超級用戶組,此處的root對應的是root組,你可以根據實際情況來進行修改喲~</description>
        </property>
    ......
    [root@hadoop101.yinzhengjie.com ~]#
  
  溫馨提示:
    上述配置僅需在beeline客戶端節點修改相應的配置信息即可,無需將配置同步到集群喲~   博主推薦閱讀:     https:
//hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/Superusers.html

 

 

四.

 

 

五.

 


免責聲明!

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



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