hadoop safemode关闭失败(leave后仍是safe mode on)

今天想删除hdfs上的某个目录时,总是报错,苦恼了很久才解决。
烦恼是一定会有的,但不能一直烦恼下去,因为问题总要解决的。后来我静下心,仔细查看日志中的错误信息,发现报的是这样的错误:
org.apache.hadoop.dfs.SafeModeException: Cannot delete /user/hadoop/input. Name node is in safe mode
这个错误意思是说namenode节点当前处于安全模式,此时不能对hdfs上的数据进行修改。
了解了问题发生的原因后,我就循着这个方向google查找解决方法,大部分的解决方法都是说,集群启动后都会先进入安全模式,这种情况下只要等待一会儿就可以自动退出安全模式了,然而等了挺长一段时间之后再次请求写任务,依然报错。
既然等解决不了问题,我就尝试强制退出安全模式,shell中执行:
hdfs dfsadmin -safemode leave

就可以强制退出安全模式。
hdfs dfsadmin -safemode value
value有四种选择:
enter 进入安全模式
get 获取安全模式的状态
leave 强制退出安全模式
wait 等待安全模式结束
我就执行了
hdfs dfsadmin -safemode leave

执行结果显示safemode is off
然后执行
hdfs dfsadmin -safemode get

查看namenode安全模式状态,又变成safemode is on 了,刚才不还是off吗,不是退出了吗?怎么又这样呢?
百思不得其姐,后来查到一篇文章里说到当硬盘使用超过90%时,namenode就会进入安全模式,强制退出也不行。
发生这种情况,要么对硬盘扩容,要么删除硬盘中的某些文件,释放空间。
我刹那间像是看到了曙光一般,因为我有一次为了模拟数据倾斜,向hdfs上传了多个大小为3G的文件,所以该问题很有可能就是磁盘使用过度导致的,但由于此时namenode处于safemode,我想删除hdfs上的数据也行不通(namenode处于安全模式是无法执行写任务的),又不想扩容,所以我最后就选择了使用虚拟机快照功能将节点恢复到上一次生成快照时的状态。
ps:我这只是不得已而为之,这种办法不推荐的(这种感觉就跟恢复系统出厂设置一样,所以不推荐哈)。
恢复后等了一会儿后执行hdfs dfsadmin -safemode get查看状态,真的退出了,果然正确,就是硬盘空间使用过度导致的安全模式无法退出。
一般情况下安全模式是可以等待它自动退出或者强制退出的,因为namenode启动后要加载元数据信息到内存,所以都会进入safemode的状态,当集群准备好了之后,就会退出safemode了。

转自https://www.jianshu.com/p/de308d935d9b

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值