英语不是我的母语;请原谅打字错误。在本教程之后,我尝试在linux环境中安装带有hadoop的hive。hadoop安装正确,但当我尝试安装hive时,我在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文件中y放置以下内容:
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\u home和hive\u home
这个问题对我不起作用,我也运行了创建模式的命令,但失败了: schematool -dbType derby -initSchema
我认为还有一件事可以帮上忙,那就是修改pom.xml文件以避免多个slf4j绑定,但是我找不到它。试试这个,但我没找到。
提前谢谢
2条答案
按热度按时间lmvvr0a81#
slf4j是一个日志api。它将动态地绑定到一个实现,但它希望只存在一个实现。在您的例子中,似乎有三个jar提供了slf4j实现;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中了。
bnlyeluc2#
当我尝试安装hive2.0.0时,我得到了我发布的错误,但是如果我安装版本1.2.1,它可以正常工作,只需设置环境变量并创建
/user/hive/warehouse directory
在hdfs中。一定是新版本的错误。我的建议是安装1.2.1版而不是2.0.0版