前言:我用的是hbase2.1.0;Hadoop2.7.4;zookeeper3.4.10;分别对以上三个工具进行了容器化。

好不容易解决完各种坑,将容器化的hbase运行起来,数据插着插着又出现各种问题,我的内心真的是崩溃的。

一、首先出现的第一个问题描述如下:

1. 用jps查看hbase、Hadoop、zookeeper相应服务,都正常运行;

2. 登录网页也可看到hbase与Hadoop的信息;

3.但是,用hbase shell进入shell界面,对表进行表操作时,出现如下错误:

ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet
       at org.apache.hadoop.hbase.master.HMaster.checkServiceStarted(HMaster.java:2832)
       at org.apache.hadoop.hbase.master.MasterRpcServices.isMasterRunning ( MasterRpcServices.java: 1085)
       at org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService $2.callBlockingMethod(MasterProtos.java)
       at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:409)
       at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:130)
       at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java.324)
       at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java.304)

查找网上资料,说是hadoop处在安全模式下,所以才导致hbase操作异常,按照网上的解决方案,手动退出安全模式,命令如下:

./hadoop dfsadmin -safemode leave 
或者
./hdfs dfsadmin -safemode leave

二、新问题

网友说问题得到解决,可是我的问题还是没有解决!!!!!!

根据以前的资料修改配置,让我一度怀疑是否是我的配置问题,或者是容器化后hbase就有其他乱七八糟的问题,然而并不是~因为以前的配置,也运行的好好的;

为查看是否是容器化的问题,我重新在物理机上部署了hbase、Hadoop、zookeeper,也遇到同样的问题,查看日志,竟然发现内存不足!删掉一些东西,腾出一些内存,继续重启hbase、Hadoop、zookeeper,ServerNotRunningYetException错误问题解决了,但是出现新问题,以前遇到过的:error: KeeperErrorCode = NoNode for /hbase/master错误,详情见链接。

配置也是对的,最后实在没法子了,重新制作镜像,重新容器化hbase和zookeeper,并将hbase、Hadoop、zookeeper都重启了一下,error: KeeperErrorCode = NoNode for /hbase/master解决了(按照链接说的,zookeeper成功开始服务了),又重复出现ServerNotRunningYetException错误。

重新执行Hadoop离开安全模式操作,$ ./hdfs dfsadmin -safemode leave  ;竟然奇迹般的解决问题了!!hbase以前的数据也能看到!!

三、总结

  经过这个坑,我总结了几点需要注意的问题:

 1. hbase运行的服务器内存需足够,内存不足应该提前做准备,不然会出现未知错误!

 2. hbase极度依赖zookeeper!

 3.hbase、Hadoop、zookeeper三者之间的联系究竟是什么?(待续)

 4. Hadoop安全模式什么时候启动?

四、附录

附上与hadoop安全模式相关的命令:

1. 查看安全模式
$ ./hdfs dfsadmin -safemode  get
返回:Safe mode is OFF  
2. 进入安全模式
$ ./hdfs dfsadmin -safemode  enter
返回:Safe mode is  ON 
3. 离开安全模式
$ ./hdfs dfsadmin -safemode leave  
返回:Safe mode is OFF