今天这篇文章是接上次的文章:Hadoop集群搭建过程中的常见问题(一)的续篇,在这里继续列出一些我在使用HBase的过程中遇到的一些问题:
1. “ Can’t get master address from ZooKeeper; znode data == null”
这个问题出现在我执行hbase shell,执行表操作的时候,这也是最常见的hbase问题之一,这个问题的解决方法如下:
1)重启HBase:首先是重启HBase(具体的指令我就不说了,自行百度HBase启动指令),再次执行hbase shell进行测试;
2)查看所有节点是否启动:jps指令可以查看现在集群中启动的节点有哪些,这又会出现以下两种情况:
a.HMaster未启动成功:
解决方法1:
1)cd /home/hadoop/hbase-0.96.0-hadoop2/lib下运行命令: rm -rf hadoop*.jar删掉所有的hadoop相关的jar包
2)将Hadoop目录下的jar包复制到HBase目录下:
find /usr/local/hadoop/share/hadoop -name "hadoop*jar" | xargs -i cp {} /usr/local/hbase/lib/
解决方法2.清空Zookeeper下的遗留数据信息
将zookeeper/bin/zookeeper.out删除
b.HRegionserver未启动成功:
解决方法:
在需要启动HRegionserver服务的节点上手动启动:
~/hadoop-2.2.0/hbase-0.98.2-hadoop2$ bin/hbase-daemon.sh start regionserver
2. “ SLF4J问题”
这个问题同样是出现在启动hbase shell之后出现的错误提示:
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/hbase/lib/slf4j-log4j12- 1.6.4.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
这个提示也比较明确,是发生了包的冲突:分别为:
file:/usr/hbase/lib/slf4j-log4j12- 1.6.4.jar!/org/slf4j/impl/StaticLoggerBinder.class
file:/usr/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class
解决方法: 移除其中一个jar包即可:
cd /usr/hbase/lib
rm slf4j-log4j12-1.6.4.jar
HBase作为一个非结构化分布式数据库,有非常多的优点,我也是在对它的一步步探索之中,希望有兴趣的朋友可以在留言区列出自己的问题,大家共同交流学习,谢谢!