Hadoop培训内容:安全模式,安全模式是这样一种特殊状态:当系统处于这个状态时,不接受任何对名称空间的修改,同时也不会对数据块进行复制或删除。NameNode在启动的时候会自动进入安全模式,也可以手动进入(不会自动离开)。NameNode从所有的DataNode接收心跳信号和块状态报告。
块状态报告包括了某个DataNode所有的数据块列表,每个数据块都有一个指定的最小副本数。当NameNode检测确认某个数据块的副本数目达到这个最小值时,该数据块就会被认为是副本安全(safely replicated)的;在一定百分比(这个参数可配置)的数据块被NameNode检测确认是安全的之后(加上一个额外的30秒等待时间),NameNode将退出安全模式状态。来源:CUUG官网相关参数包括:
dfs.safemode.threshold.pct,接受到的Block的比例,默认为95%,也就是说,必须DataNode报告的数据块数目占总数的95%,才到达门槛。
dfs.replication.min,等待时间默认为1,即每个副本都存在系统中。
dfs.replication.min,等待时间默认为0,单位为秒。
NameNode退出安全模式之后会确定还有哪些数据块的副本没有达到指定数目,并将这些数据块复制到其他DataNode上。
同样,有两种方法可用于离开这种安全模式,第一种就是修改dfs.safemode.threshold.pct为一个比较小的值,默认是0.999;第二种方法就是通过hadoop命令强制执行,相关命令
如下:
hadoop dfsadmin -safemode leave
用户可以通过dfsadmin命令来操作安全模式,相关命令如下:
hadoop dfsadmin -safemode enter // 进入安全模式
hadoop dfsadmin -safemode leave // 强制NameNode离开安全模式
hadoop dfsadmin -safemode get // 返回安全模式是否开启的信息
hadoop dfsadmin -safemode wait // 等待,一直到安全模式结束