Mac OS X 10.11.6上HBase 1.2.6启动Shell失败求助
解决HBase 1.2.6在Mac OS X 10.11.6启动Shell时的错误
你遇到的这个问题核心原因是HBase 1.2.6与Java 9不兼容,再加上自带的旧版JRuby(1.6.8)无法适配Java 9的反射权限机制,才会触发这些非法访问警告和参数错误。下面是具体的解决步骤:
1. 降级Java版本到Java 8
HBase 1.x系列官方明确推荐使用Java 8,Java 9及以上引入的模块系统和API变动会导致老版本HBase出现兼容性问题:
- 先查看Mac上已安装的Java版本:
/usr/libexec/java_home -V - 找到Java 8的路径后,修改你的Shell配置文件(如果用bash就是
~/.bash_profile,zsh则是~/.zshrc),添加以下内容:export JAVA_HOME=$(/usr/libexec/java_home -v 1.8) export PATH=$JAVA_HOME/bin:$PATH - 生效配置并验证版本:
确认输出显示的是Java 8版本即可。source ~/.bash_profile # 若用zsh则替换为source ~/.zshrc java -version
2. 检查并修正HBase配置
虽然你已经完成了基础配置,但还是建议确认以下关键项:
- 打开
conf/hbase-site.xml,确保单机模式的配置正确:<configuration> <!-- 配置HBase数据存储的本地路径 --> <property> <name>hbase.rootdir</name> <value>file:///Users/user/Hbase/Hb126/data</value> </property> <!-- 配置ZooKeeper数据存储路径 --> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/Users/user/Hbase/Hb126/zookeeper</value> </property> <!-- 启用单机模式 --> <property> <name>hbase.cluster.distributed</name> <value>false</value> </property> </configuration> - 打开
conf/hbase-env.sh,确保JAVA_HOME指向刚才配置的Java 8路径,同时注释掉与Java 9冲突的GC参数:# 注释掉类似这样的行(如果存在) # export HBASE_OPTS="-XX:+UseConcMarkSweepGC"
3. 重新启动HBase Shell
- 先清理可能残留的HBase进程:
./bin/stop-hbase.sh - 然后启动Shell:
这时候应该就能正常进入HBase Shell,不会再出现之前的错误了。./bin/hbase shell
内容的提问来源于stack exchange,提问作者Alessandro Blasetti
相关产品推荐
相关产品推荐

