1.启动hbase之后,Hmaster老是挂掉
如图,我的Hbase在启动之后Hmaster总是会莫名其妙的挂掉。
首先遇到问题了之后,先是查看了hbase的日志文件查看报错信息,发现相关问题的报错信息如下图所示:
当然目前我看这些还是看不懂的,所以我就把报错信息复制进行百度,查找相关的解决方法,通过百度查找,看到好多解决方法都是说将zookeeper当中的hbase缓存清除掉或者直接删掉hdfs里面的/hbase文件。但是由于我的环境是使用的hbase自带的zookeeper,所以前面的方法貌似对我来说行不通,然后我试了删掉hdfs里面的/hbase文件,成功解决了Hmaster老是挂掉的问题。
但是后面我发现这个问题的根本原因并不在这儿,而是因为Hbase配置文件中的hbase.rootdir的地址有问题,这个地址应该和hadoop的配置文件当中的地址必须要是一样的。
2.创建表的时候老是会报错Master is initializing.
值得注意的是我在hbase shell里边进行测试的时候,就只有创建表的时候会报错,而其它的命令如status、list都没有问题,所以猜测应该是配置文件的问题。然后我仔细研究了一下配置文件。
发现配置文件上hbase.rootdir的映射是localhost,而我的系统终端显示的主机名却是cxf-virtual-machine(如下图所示:)
于是我就进入了/etc/hosts查看主机映射,果不其然发现我所使用的主机名映射的地址为127.0.1.1,而localhost映射的则为127.0.0.1(如下图所示:)。
然后我在/etc/hostname 文件中修改主机名为localhost,并删除/etc/hosts 文件中cxf-virtual-machine那一栏。然后再试一试创建表,创建成功了!
3.进行HbaseAPI编程的时候,运行报错java.lang.NoClassDefFoundError: org/apache/htrace/Trace和Exception in thread“main“ java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
然后就是运行hbaseAPI编程的时候报了两个找不到包的错误,而这些包在hadoop目录下./share/hadoop/common/lib中包含有,可以直接从这儿导入到项目当中。所需要导入的包如下图:
然后我先是导入了一个htrace-core-3.1.0-incubating.jar的包,但是还是报错找不到java.lang.NoClassDefFoundError: org/apache/htrace/Trace,网上查询可能是因为版本的问题,所以就又从网上下载了一个4.1.0版本导入到项目中,成功解决问题。最终导入的包如下图所示: