zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    光盘和U盘
    解决时间同步
    僵尸进程 和 孤儿进程
    Centos虚拟机设置网络模式
    常用CDN 和 后台管理模板
    微信小程序wxs如何使用
    kubernetes/client-go--使用 Clientset 获取 Kubernetes 资源对象
    samplecontroller
    volcano
    DNS欺骗
  • 原文地址:https://www.cnblogs.com/hejing195/p/7443653.html
Copyright © 2011-2022 走看看