赞
踩
系统:Ubuntu20.04
Hadoop版本:Hadoop3.3.1
Hbase版本:Hbase2.2.2
在启动 Hbase 时,或者查看 Hbase version 和使用 shell 时,出现如下输出:
hadoop@fzqs-Laptop:/usr/local/hbase$ bin/hbase shell
SLF4J: Class path contains multiple SLF4J bindings.
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: Found binding in [jar:file:/usr/local/hbase/lib/client-facing-thirdparty/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.slf4j.impl.Log4jLoggerFactory]
原因很简单,Hbase 是自带有 Hadoop 中的相关依赖文件的,在本地装好 Hbase 后,Hadoop 中的文件与 Hbase 中的文件都有相关类的定义,从而导致如上输出。
方法有二,一是修改配置文件,让 Hbase 只使用内置的依赖文件:
先进入 Hbase 安装目录:
cd /usr/local/hbase
修改 hbase-env.sh 文件:
vim conf/hbase-env.sh
在命令模式下按下 G 键,跳转到文本末尾,可以看到最后几行内容如下:
# Tell HBase whether it should include Hadoop’s lib when start up,
# the default value is false,means that includes Hadoop’s lib.
# export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP=“true”
删除最后一行的注释符,即开头的“#”号,:wq 保存并退出,完成。
bin/hbase version
二是删除 Hadoop(或 Hbase)中相重复定义的文件,如上一条输出如下:
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: Found binding in [jar:file:/usr/local/hbase/lib/client-facing-thirdparty/slf4j-log4j12-1.7.25.jar!
/org/slf4j/impl/StaticLoggerBinder.class]
标红地方即是重复文件的位置,进入该位置:
cd /usr/local/hadoop/share/hadoop/common/lib
ls slf4j*
输出如下,
hadoop@fzqs-Laptop:/usr/local/hadoop/share/hadoop/common/lib$ ls slf4j*
slf4j-api-1.7.25.jar
slf4j-log4j12-1.7.25.jar
删除含有 logs 的文件即可:
sudo rm ./slf4j-log4j12-1.7.25.jar
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。