当前位置: 代码迷 >> 综合 >> The ratio of reported blocks 0.0000 has not reached the threshold 0.9990. Safe mode will be turned o
  详细解决方案

The ratio of reported blocks 0.0000 has not reached the threshold 0.9990. Safe mode will be turned o

热度:53   发布时间:2024-01-19 01:07:46.0
Hadoop集群启动的时候一切正常,但一直处于safemode,只能读不能写,这种时候应该查看namenode的logs,当然这可能会出现不同的情况... 下面仅介绍一种错误处理方案,希望能抛砖引玉,能对大家有所启发。

org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot delete /home/hadoop/tmp/mapred/system. Name node is in safe mode.

The ratio of reported blocks 0.0000 has not reached the threshold 0.9990. Safe mode will be turned off automatically.


由日志可以看出无法删除/home/hadoop/tmp/mapred/system.(其实这只是一种假象,往往我们会去纠结于这个目录,其实不然)

解决方案:
      1:终极办法强制退出安全模式(safemode)   hadoop dfsadmin -safemode leave   这种方式虽然快,但会有遗留问题,我在用habse的时候就遇到过,很麻烦,然后你就用“hadoop fsck /”工具慢慢恢复吧。      

2:删除namenode下/home/hadoop/tmp下的所有文件,重新format,当然这种方式非常暴力,因为你的数据完全木有了(对于format后可能会遇到的问题我的另一篇文章      

3:参考源码可发现这个错误是在检查file的时候抛出来的,基本也就是file的block丢失、错误等原因造成的。这种情况在副本数为1的情况下会很棘手,其他的时候hadoop基本能自行解决,错误数很多的情况下就会一直处于safemode下,当然你关于集群修改配置文件后的分发,本人写了一个配置文件分发工具可以强制离开安全模式,先保证正常读写,然后再启用“hadoop fsck /”工具慢慢修复。
  相关解决方案