前提:
配置好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,问题解决。