首页 文章

当我尝试安装Hive 2.0时,我得到了多个SLF4J绑定,并且Hive Metastore数据库未初始化

提问于
浏览
0

英语不是我的母语;请原谅输入错误 . 我尝试在这个tutorial之后的linux环境中使用hadoop安装hive . Hadoop安装正确,但是当我尝试安装配置单元时,我在shell中获得以下输出:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/phd2014/hive/lib/hive-jdbc-2.0.0-standalone.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/phd2014/hive/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/phd2014/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Logging initialized using configuration in jar:file:/home/phd2014/hive/lib/hive-common-2.0.0.jar!/hive-log4j2.properties
Java HotSpot(TM) Client VM warning: You have loaded library /home/phd2014/hadoop/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
Exception in thread "main" java.lang.RuntimeException: 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)

在我的〜/ .bashrc文件中,输入以下内容:

export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export HADOOP_PREFIX=/home/phd2014/hadoop
export HADOOP_HOME=/home/phd2014/hadoop
export HADOOP_MAPRED_HOME=/home/phd2014/hadoop
export HADOOP_COMMON_HOME=/home/phd2014/hadoop
export HADOOP_HDFS_HOME=/home/phd2014/hadoop
export YARN_HOME=/home/phd2014/hadoop
export HADOOP_CONF_DIR=/home/phd2014/hadoop/etc/hadoop
export HIVE_HOME=/home/phd2014/hive
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$HIVE_HOME/bin

我还在 .profile 文件中导出变量HADOOP_HOME和HIVE_HOME

这个问题here对我不起作用,我也运行命令来创建Schema但它失败了: schematool -dbType derby -initSchema

我还有一件事,我认为它可以帮助,并修改pom.xml文件,以避免多个SLF4J绑定,但我找不到它 . 试试this,但我没找到 .

提前致谢

2 回答

  • 0

    当我尝试安装hive 2.0.0时,我得到了我发布的错误,但如果我安装版本1.2.1而不是它工作正常,只需通过设置环境变量并在HDFS中创建 /user/hive/warehouse directory . 它必须是新版本的错误 . 我的建议是安装版本1.2.1而不是2.0.0

  • 1

    SLF4J是一个日志API . 它将动态绑定到一个实现,但它希望只有一个存在 . 在您的情况下,您似乎有三个提供SLF4J实现的jar; hive-jdbc-2.0.0-standalone.jar,log4j-slf4j-impl-2.4.1.jar和slf4j-log4j12-1.7.10.jar .

    hive-jdbc-2.0.0-standalone.jar似乎是一个“阴影”jar - 它包含来自多个第三方jar的类,包括log4j-slf4j-impl的内容 . 我猜这是SLF4J实际选择的,因为它是第一个找到的 .

    问题是你在某种程度上包括独立 jar 已经合并的 jar . 通常使用独立的 jar ,你需要的一切都应该在那个 jar 里 .

相关问题