Hadoop安全模式Safe-mode

5次阅读

共计 1143 个字符,预计需要花费 3 分钟才能阅读完成。

Hadoop 的安全模式

Error

The number of live datanodes 0 has reached the minimum number 0. Safe mode will be turned off automatically once the thresholds have been reached. NamenodeHostName:XXX

原因

Hadoop 的安全模式下,不能写 hdfs 的文件,只能查看。如果在此时启动了 hive 或者别的可能造成写 hdfs 的软件,会导致 SafeModeException 错误。

解决方法:

判断是否处于安全模式 – hadoop dfsadmin -safemode get
退出安全模式 – hadoop dfsadmin -safemode leave
强制退出安全模式 hadoop dfsadmin -safemode forceExit

为什么会有安全模式

当 Hadoop 的 NameNode 节点启动时,会进入安全模式阶段。在此阶段,DataNode 会向 NameNode 上传它们数据块的列表,让 NameNode 得到块的位置信息,并对每个文件对应的数据块副本进行统计。当最小副本条件满足时,即一定比例的数据块都达到最小副本数,系统就会退出安全模式,而这需要一定的延迟时间。当最小副本条件未达到要求时,就会对副本数不足的数据块安排 DataNode 进行复制,直至达到最小副本数。而在安全模式下,系统会处于只读状态,NameNode 不会处理任何块的复制和删除命令。

在安全模式期间,Hadoop 主要做这些事情。

  1. NameNode 从磁盘读取 FsImage 和 EditLog 的 xinxi,将 EditLog 中的所有事务应用到 FsImage 的内存中,并将这新版本的数据刷新到磁盘上的新 FsImage 中。
  2. 接收集群中的 DataNode 块报告。

安全模式结束的条件

NameNode 完成一部分比例 (可配置) 的数据检查再过 30s(可配置),NameNode 会自动退出 Safemode 状态。在 hdfs-site.xml 文件中配置。

配置项 注释
dfs.safemode.threshold.pct 指定退出条件,需要达到最小副本数的数据块比例,默认是 0.999
dfs.safemode.extension 指定系统退出安全模式时需要的延迟时间,默认为 30s

参考

Hadoop 的配置项可以查看这份文档,选择自己对应的版本:
https://hadoop.apache.org/docs/r3.2.0/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

也可以参考这篇国外博客:
https://netjs.blogspot.com/2018/02/what-is-safemode-in-hadoop-hdfs.html

正文完
 0