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

时间:2016-03-20 20:20:23

标签: maven hadoop hive

英语不是我的母语;请原谅输入错误。 我试图在这个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对我没用,我也运行命令来创建架构,但失败了:schematool -dbType derby -initSchema

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

提前致谢

2 个答案:

答案 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实际选择的,因为它是第一个找到的。

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

答案 1 :(得分:0)

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