天天看点

Hbase启动从节点报错:FATAL org.apache.hadoop.hbase.regionserver.HRegionServer:...ClockOutOfSyncException

前提:

配置好hadoop、zookeeper,和Hbased的配置文件。

通过主节点启动Hbase: ./bin/start-hbase.sh

报错:

2016-08-17 11:29:40,895 FATAL org.apache.hadoop.hbase.regionserver.HRegionServer: Master rejected startup because 
clock is out of sync org.apache.hadoop.hbase.ClockOutOfSyncException: org.apache.hadoop.
hbase.ClockOutOfSyncException: Server zzs173,60020,1471404579580 has been rejected; 
Reported time is too far out of sync with master.  
Time difference of 43175940ms > max allowed of 180000ms
           

1)报错完整信息为:

2016-08-17 11:29:40,895 FATAL org.apache.hadoop.hbase.regionserver.HRegionServer: 
Master rejected startup because clock is out of sync org.apache.hadoop.hbase.ClockOutOfSyncException: 
org.apache.hadoop.hbase.ClockOutOfSyncException: Server zzs173,60020,1471404579580 has been rejected; 
Reported time is too far out of sync with master.  
Time difference of 43175940ms > max allowed of 180000ms
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
    at org.apache.hadoop.ipc.RemoteException.instantiateException(RemoteException.java:95)
    at org.apache.hadoop.ipc.RemoteException.unwrapRemoteException(RemoteException.java:79)
    at org.apache.hadoop.hbase.regionserver.HRegionServer.reportForDuty(HRegionServer.java:2117)
    at org.apache.hadoop.hbase.regionserver.HRegionServer.run(HRegionServer.java:754)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.hadoop.ipc.RemoteException: org.apache.hadoop.hbase.ClockOutOfSyncException: 
Server zzs173,60020,1471404579580 has been rejected; Reported time is too far out of sync with master.  
Time difference of 43175940ms > max allowed of 180000ms
    at org.apache.hadoop.hbase.master.ServerManager.checkClockSkew(ServerManager.java:235)
    at org.apache.hadoop.hbase.master.ServerManager.regionServerStartup(ServerManager.java:169)
    at org.apache.hadoop.hbase.master.HMaster.regionServerStartup(HMaster.java:1084)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.hadoop.hbase.ipc.WritableRpcEngine$Server.call(WritableRpcEngine.java:323)
    at org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:1434)

    at org.apache.hadoop.hbase.ipc.HBaseClient.call(HBaseClient.java:1017)
    at org.apache.hadoop.hbase.ipc.WritableRpcEngine$Invoker.invoke(WritableRpcEngine.java:87)
    at com.sun.proxy.$Proxy7.regionServerStartup(Unknown Source)
    at org.apache.hadoop.hbase.regionserver.HRegionServer.reportForDuty(HRegionServer.java:2115)
    ... 2 more
           

2) 解决

明显看到报错信息:

Time difference of 43175940ms > max allowed of 180000ms

解决方案A:

<span style="font-size:18px;">同步集群主机的时间</span>
           

解决方案B:

配置hbase-site.xml  增加节点

<property>
       <name>hbase.master.maxclockskew</name>
       <value>180000</value>
       <description>Time difference of regionserver frommaster</description>
   </property>
           

发现已经配置了,可是为什么还报错 时间差 大于了 180000ms 呢?

速度查看系统的时间,分别为:

171 Wed Aug 17 23:36:33 CST 2016
172 Wed Aug 17 23:36:33 CST 2016
173 Wed Aug 17 23:36:33 EDT 2016
           

细心才发现,时间的格式不一致,一个为CST,一个为EDT,所以EDT的这台机器老报错。

解决:

# shell中直接执行:
mv /etc/localtime /etc/localtime.bak
ln -s /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime
date
           

重启Hbase,问题解决。