好程序员:HDFS的安全模式

什么是安全模式:

安全模式是HDFS所处的一种特殊状态,在这种状态下,文件系统只接受读数据请求,而不接受删除、修改等变更请求。

安全模式下hdfs做了什么事:

1、NameNode启动后会进入一个称为安全模式的特殊状态。处于安全模式的NameNode是不会进行数据块的复制的。

2、NameNode从所有的DataNode接收心跳信号和块状态报告。块状态报告包括了某个NameNode所有的数据块列表。每个数据块都有一个指定的最小副本数。当NameNode检测确认某个数据块的副本数目达到这个最小值,那么该数据块就会被认为是副本安全 (safely replicated) 的;

3、在一定百分比(这个参数可配置)的数据块被 NameNode检测确认是安全之后(加上一个额外的30秒等待时间), NameNode将退出安全模式状态。

4、接下来它会确定还有哪些数据块的副本没有达到指定数目,并将这些数据块复制到其他NameNode上。

怎么离开安全模式:

方法一、暴力的直接将整个文件系统格式化:hdfs namenode -format

方法二、将其控制安全模式的阀值调小:dfs.safemode.threshold.pct(将其该值调整整)

方法三、使用命令强制离开安全模式然后再检测损坏block并删除:

1.hdfs dfsadmin -safemode leave (强制离开安全模式)

2.hdfs fsck / -delete (删除掉损坏的blocks)

如果想修复,可以使用linux的/sbin/fsck修复工具。


分享到:


相關文章: