关于hadoop:HDFS-安全模式是什么

3次阅读

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

HDFS – NameNode 的高可用提到了 NameNode 有 active 状态和 standby 状态,他还有另外一个状态,就是 safemode,平安模式。在平安模式下,HDFS 不接管对元素批改的申请,只容许对元数据的读申请。以下是几种进入平安模式的形式:

可用空间

当 NameNode 启动的时候,会获取文件所在的磁盘分区里真正能够应用的存储空间,而后跟 duReserved 进行比照,如果存储空间大于 duReserved,则返回 true,如果小于,则返回 false,返回值赋值给返回值给 hasResourcesAvailable。duReserved 默认为 100M,能够通过 dfs.namenode.resource.du.reserved 进行配置。
hasResourcesAvailable 为 false 的时候,阐明可用存储空间有余 100M,此时进入平安模式。

block 个数

NameNode 启动的时候,会从磁盘 fsimage 加载元数据,加载后他就晓得了总共有多少个 block,然而他不晓得这些 block 在 DataNode 中是否失常,所以进入平安模式,期待 DataNode 上报本人的 block 信息,当上报的 block 个数达到肯定阈值的时候,就会退出平安模式,上面是具体的计算过程。
在 HDFS 中,block 的状态包含正在构建的和 complete 两种状态,所以咱们要获取到 complete 的 block 个数,就须要先获取所有的 block,而后减去正在构建的 block,这样就能够获取到 complete 的 block 个数。
threshold 参数,比方为 0.9,阐明 block 数量为 100 的状况下,只有存在 90 个失常的 block 就能够了,因为 HDFS 集群的文件数量是相当多的,他的默认值是 0.999,代表 1000 个 block 至多要 999 个是失常的,能够通过 dfs.namenode.safemode.threshold-pct 进行配置。
complete 的 block 个数乘以 threshold,这个值就是要保障 HDFS 失常写申请的最低数据量,如果 datanode 汇报过去的 block 个数 blockSafe 比最低数据量还小,那就要进入平安模式。

datanode 的存活个数

datanode 的存活个数 datanodeThreshold 默认为 0,代表的不启用,如果有设置,那就要与 DataNode 的个数进行判断,如果存活的 DataNode 个数小于设置的值,那须要进入平安模式。

命令

除了下面三种主动进入平安模式外,咱们还能够通过命令让 HDFS 进入平安模式:

命令 形容
hdfs dfsadmin -safemode get 查看平安模式的状态
hdfs dfsadmin -safemode enter 进入平安模式
hdfs dfsadmin -safemode wait 进入平安模式
hdfs dfsadmin -safemode leave 来到平安模式

enterwait 都是进入平安模式,区别是 enter 是肯定进入平安模式的,wait 是期待 HDFS 进入平安模式,就如同在 java 中执行 gc 命令,并不会间接执行 gc 命令一样。

正文完
 0