美文网首页
HDFS Stale DN 特性

HDFS Stale DN 特性

作者: xudong1991 | 来源:发表于2021-09-03 09:29 被阅读0次

Stale DN 特性概述

默认情况下,HDFS 集群中一个 DN 意外退出或 down 掉后,NameNode 并不会立刻作出响应,而是一直要等到 10min 30s 之后,才会把此 DN 标记为 dead,之后该 DN 不可读写。这个过程中存在的问题是:从 DN down 掉到变为 dead,整个过程耗时较长,在这段时间内,该 DN 仍然有可能被读写,从而导致客户端读写出错。

启用了 Stale DN 特性之后,一个意外 down 掉的 DN 可以在较短时间内(默认30s)就变为 stale DN,一个 stale DN 的读写优先级会被降到最低,从而可以最大程度的避免客户端读写这个 DN,尽量避免客户端读写出错。

查看当前集群 stale DN 信息

  1. NameNode Web 页面上,所有 Last contact 大于 stale interval(默认30s)的 DN,全都是 stale DN。

  2. NameNode jmx 中的 NumStaleDataNodes 项表示 stale DN 的个数(实际使用中将 192.168.202.11:50070 替换为真实的 NN http 地址):
    http://192.168.202.11:50070/jmx?get=Hadoop:service=NameNode,name=FSNamesystem::StaleDataNodes

    注意:NameNode 中 HeartbeatManager 周期性更新这个值(周期即为 stale interval,默认30s),因此,该值最多可能有长达 stale interval 的延迟。

Stale DN 写相关事项

  1. 打开避免写 stale DN 特性,需打开如下选项(默认 false):
<property>
<name>dfs.namenode.avoid.write.stale.datanode</name>
<value>true</value>
</property>
  1. 如果集群中剩余的正常 DN 个数已无法达到目标副本系数(例如:目标副本系数为3,但集群中仅剩余2个正常 DN),则 NN 也会尝试分配 stale DN,随后 client 会尝试写 stale DN.

  2. 如果集群中 stale DN 达到一定比例,那么 NN 不再区分 stale DN 与正常 DN,全部默认可写,这样做的目的是防止明显的数据倾斜,该比例的配置如下(默认0.5):

<property>
<name>dfs.namenode.write.stale.datanode.ratio</name>
<value>0.5</value>
</property>

Stale DN 读相关事项

  1. 打开避免读 stale DN 特性,需打开如下选项(默认 false):
<property>
<name>dfs.namenode.avoid.read.stale.datanode</name>
<value>true</value>
</property>
  1. 如果集群中剩余的正常 DN 已经无法读到目标 block,则 client 也会尝试读取 stale DN 上的 block.

相关文章

网友评论

      本文标题:HDFS Stale DN 特性

      本文链接:https://www.haomeiwen.com/subject/nbgxwltx.html