重启HBase后,进入hbase shell 进行 scan 、get 、create等操作均报错:
ERROR: org.apache.hadoop.hbase.NotServingRegionException: org.apache.hadoop.hbase.NotServingRegionException: Region is not online: .META.,,1
at org.apache.hadoop.hbase.regionserver.HRegionServer.getRegion(HRegionServer.java:3154)
at org.apache.hadoop.hbase.regionserver.HRegionServer.getClosestRowBefore(HRegionServer.java:1974)
at sun.reflect.GeneratedMethodAccessor11.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.hbase.ipc.WritableRpcEngine$Server.call(WritableRpcEngine.java:364)
at org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:1400
找了很久才发现,原来是由于集群中各节点的时间不一致造成RegionServer启动失败:集群节点和master的时间误差阀值由hbase.master.maxclockskew参数设定的。
1.解决方法1,将参数值增加到5分钟
在hbase-site.xml添加配置
<property>
<name>hbase.master.maxclockskew</name>
<value><span style="color:#FF0000;">300000</span></value>
<description>Time difference of regionserver from master</description>
</property>
2.方案2
修改各结点时间,使其误差在30s内
参Linux 修改时间: