原因是hive和hadoop的guava.jar版本不一致
部署hadoop-3.2.1和hive-3.1.2时,启动hive报错:
SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/usr/local/hive/lib/log4j-slf4j-impl-2.10.0.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.25.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] Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V
一开始读报错信息以为是多了一个slf4j的jar,删掉其中一个后,却报了其他错:
hadoop@ubuntu:/usr/local/hadoop/share/hadoop/common/lib$ rm slf4j-log4j12-1.7.25.jar hadoop@ubuntu:/usr/local/hadoop/share/hadoop/common/lib$ hive SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V
看来删错了东西,重新安装配置好hadoop后,
在网上找到了原因是hive和hadoop的guava.jar版本不一致
将hadoop的guava.jar替换掉hive中的版本:
(多上网查查资料可比自己傻干好) 查到的超好用教程:dblab.xmu.edu.cn/blog/2440-2…