今天执行hbase 命令时出现如下错误
org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet
经过研究发现,是hadoop非正常启动进入了安全模式
hdfs dfsadmin -safemode get
我们强制退出安全模式
hdfs dfsadmin -safemode forceExit
# 查看安全模式状态
hdfs dfsadmin -safemode get
# 进入安全模式
hdfs dfsadmin -safemode enter
# 离开安全模式
hdfs dfsadmin -safemode leave
# 强制退出安全模式
hdfs dfsadmin -safemode forceExit
# 等待安全模式
hdfs dfsadmin -safemode wait
再次启动hadoop发现任然出于安全模式
分析集群为什么一直处于安全模式
集群启动后,发现一直处于安全模式中,进入 WEB 界面查看,还有一大段提示,如
通俗来说就是,当前系统中元数据与记录数据块前后不一致,而 Hadoop 默认要求最大的误差阀值为 0.001
,如果超过这个值,就会导致 Hadoop 一直处于安全模式。也就是说,我们其实已经实际删除了某些数据块,但是记录的元数据因为一些故障导致没有进行同步,就会出现这种情况。
会发现那些数据块丢失的文件,将这些文件按照路径在 HDFS 中全部删除即可。
hadoop fs -rm /hbase/data/default/userinfo/6c5f672833258c05b916c813f63e8c5d/basic/d284834c848c49d9a5b0ce43e2a12cfd
此时hbase恢复正常