错误: 找不到或无法加载主类(invalid variable name) org.apache.hadoop.hbase.util.GetJavaProperty——Hbase报错
Posted Z.Q.Feng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了错误: 找不到或无法加载主类(invalid variable name) org.apache.hadoop.hbase.util.GetJavaProperty——Hbase报错相关的知识,希望对你有一定的参考价值。
项目场景:
系统: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
以上是关于错误: 找不到或无法加载主类(invalid variable name) org.apache.hadoop.hbase.util.GetJavaProperty——Hbase报错的主要内容,如果未能解决你的问题,请参考以下文章