项目场景:

系统:Ubuntu20.04
Hadoop版本:Hadoop3.3.1
Hbase版本:Hbase2.2.2


问题描述:

在启动 Hbase 时,或者查看 Hbase version 时,出现如下报错:

/usr/local/hadoop/libexec/hadoop-functions.sh: line 2366:
HADOOP_ORG.APACHE.HADOOP.HBASE.UTIL.GETJAVAPROPERTY_USER: invalid variable name
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]


原因分析:

看了很过解决办法,很多都是说是版本不兼容导致的报错,这确实没错,由于 Hbase 是需要依赖于 Hadoop 的,这里确实是由于 Hadoop 中的配置文件与 Hbase 不兼容导致,但是在不更换 Hbase 版本的情况下,也还是有解决办法的。
道理很简单,Hbase 自带是有 Hadoop 中的依赖文件的,我们让 Hbase 不使用本地 Hadoop 中的文件,使用自带的配置文件即可。


解决方案:

先进入 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 保存并退出,查看 Hbase version,错误解决。

bin/hbase version
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐