Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient


一句話總結:連不上Hive的元數據庫(Meta Store)所致。需要查看hive.log確定問題原因。我的問題是HADOOP_CONF_DIR下的hive-site.xml中元數據庫地址配置錯誤所致。因為Hive會默認先讀取HADOOP_CONF_DIR下的hive-site.xml而非自身conf目錄下的hive-site.xml。

解決過程:

從別的機器上復制了hive和hadoop過來,修改了所有配置,但發現還是不能正常使用hive。可以通過bin/hive命令正常啟動Hive CLI,但是一旦輸入命令show databases;就會報錯:

hive (default)> show databases;
FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

通過查看日志tmp/${user.name}/hive.log,發覺如下語句:

2017-08-27 23:13:13,352 ERROR [main]: Datastore.Schema (Log4JLogger.java:error(125)) - Failed initialising database.
Unable to open a test connection to the given database. JDBC url = jdbc:mysql://Jing3.zhu/hive?createDatabaseIfNotExist=true, username = root. Terminating connection pool (set lazyInit to true if you expect to start your database after your app). Original Exception: ------
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

看到了jdbc:mysql://Jing3.zhu,而我元數據庫(metastore)的位置現在已遷移到了Jing6.zhu!

於是再次檢查hive-site.xml,但是hive-site.xml顯示:

<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://Jing6.zhu/hive?createDatabaseIfNotExist=true</value>

明明指向的是Jing6.zhu啊!

后來終於想起來,當初為了用sqoop,因為sqoop找不到hive的的配置文件,曾今把hive-site.xml文件復制到$HADOOP_CONF_DIR目錄下,即$HADOOP_HOME/etc/hadoop,而這個hive-site.xml並未修改元數據庫地址!

而Hive會優先讀取$HADOOP_CONF_DIR下的配置文件!!

所以這也導致了我配置的hive-log4j.properties失效,Hive CLI啟動時,提示使用的還是/hive-1.1.0-cdh5.7.6/lib/hive-common-1.1.0-cdh5.7.6.jar中hive-log4j.properties!因為我沒有把hive-log4j.properties一起復制到$HADOOP_CONF_DIR!

最后經Stack Overflow上高人指點,告訴我復制hive-site.xml之類的配置文件是一個很不好的方法,最好是直接建立link,或者使用Cloudera Manager管理設置文件更佳!

StackOverflow原帖:https://stackoverflow.com/questions/45906680/why-hive-will-search-its-configuration-profile-in-hadoop-conf-dir-first


免責聲明!

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



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