• 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

  • 相关阅读:
    解决Sqlite Developer过期的最简单办法(转自百度经验)
    (转)解决!Visual Studio 遇到了异常。这可能是由某个扩展导致的。
    【转】VC中的class“std::vector<_Ty>”需要有 dll 接口由 class“Test”的客户端使用错误
    切换日语输入法找不到MicrosoftIME键盘选项了
    ps如何拆分图片
    码农应该注意保持的习惯
    "指定的文件格式无法识别或为不支持的二进制"
    编译FlashDemo遇到问题:Error "pFlashUI未定义的标识符"
    GridView,GridLayout
    Android,ArrayList,List,Set等
  • 原文地址:https://www.cnblogs.com/hejing195/p/7443653.html
Copyright © 2020-2023  润新知