错误代码:
Namenode is in safe mode.
NameNode处于安全模式中。
错误原因:
1、hadoop集群在刚启动的时候,会对集群内所有节点的数据块进行检查,保证数据块的完整性,
在检查的这个阶段就会处于只读的模式,不允许系统内的文件进行修改和删除操作,直到安全模式结束。
2、hdfs中有数据块丢失,造成系统一直处于安全模式
解决办法-1:
1、强制离开安全模式:hadoop dfsadmin -safemode leave
2、在hdfs-site.xml配置参数:
参数名:dfs.safemode.threshold.pct
参数值:0
即可关闭safemode
解决办法-2:
在错误原因中,说了两个原因,如果有数据块丢失的情况下,可以使用fsck命令来修复。
如果数据不是很重要,就没必要修复了。
手动修复,首先检查哪些数据块丢失了:
hdfs fsck /
修复指定路径的hdfs文件,尝试多次
hdfs debug recoverLease -path 文件位置 -retries 重试次数
执行这个命令,hdfs就能被修复了,切记不要使用hdfs fsck / -delete 命令,它是删除所有损坏的块的数据文件,会导致数据彻底丢失,当然若只有一个副本,或所有副本均已经损坏,则可以执行此命令。
企业中一般会使用这种手动方式去修复数据块,而不使用自动方式,此处只做简单解释。
文章评论