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

四.
五.
