昨天碰到一个客户的测试环境HBase启动异常,表面的现象是从CDH界面里面看不到HMaster的主备状态,显示Master一直处于初始化的状态,通过hbcheck命令执行返回错误信息为:org.apache.haoop.hbase.PleaseHoldException: Master is initializing…
由于是HMaster异常,所以先到/var/log/hbase目录下查看Master的日志,报错如下所示:
错误信息:Reported time is too far out of sync with master,说明时钟同步出现问题,于是检查每个节点的时钟同步情况,发现当前的时钟同步是正常的。怀疑是这个环境之前是不是发生过比较严重的时钟问题,比如突然修改了系统时钟或时区,导致节点上突然发生了很大的时间更改。
但不管怎么样,我们还是先看看如何解决这个问题吧~
于是又继续查看日志(如上图),发现日志中报大量WARN信息:Found a log (hdfs://nameservice1/hbase/oldWALs/xxx) new than current time, probably a clock skew。通过"Found a log"此关键搜索了一下所有Master日志文件,日志都指向是oldWALs下面的文件。
于是去检查hbase下面的oldWALs这个路径,发现这个目录的时间确实相差很大。从以下截图可以看到,/hbase/oldWALs目录的时间居然是2025-07-09,还有/hbase/MasterProcWALs和/hbase/WALs目录。这说明这个环境确实在时钟上发生了巨大的变化。
hadoop fs -ls /hbase
由于oldWAL文件是可以被删除的,因为当时决定删除oldWALs下面的所有日志并尝试重启HBase。(当时没有仔细看每个目录的时间,只是根据日志提示认为oldW