如何在不导致 Hadoop 进入安全模式的情况下限制数据节点上的磁盘使用量?



>我有3个节点Hadoop 2.7.3集群,可以描述如下:

节点
  • A:25GB、数据节点、名称节点
  • 节点
  • B:50GB,数据节点
  • 节点
  • C:25GB,数据节点

问题是在节点A上磁盘使用率很高(约 95%(。我想实现的是限制磁盘使用率,使其永远不会超过 85%.
我试图将dfs.namenode.resource.du.reserved属性设置为大约 3gb,但它不能解决我的问题,因为一旦可用磁盘空间低于该值,我的 Hadoop 就会立即进入安全模式。
我知道 NN 必须具备所有必需的资源才能继续运行和只要有任何冗余资源可用,NN 就会继续运行.
另外,我知道定义所需资源的dfs.namenode.edits.dir.required属性,但我认为使 NN 冗余而不是必需不是一个好主意。

所以我的问题就像主题一样。我怎么能对Hadoop说:"嘿,听着。这是一个数据节点,在这里放任何你想要的东西,但如果磁盘使用率高于 85%,那么不要惊慌 - 只需停止在这里放置任何东西,继续在 DN 的其余部分做你的事情><。甚至可能吗?如果没有,那么你们会建议做什么?

有一个名为Namenode资源检查器的过程,它扫描Namenode存储卷以查找可用的可用磁盘空间。每当可用空间低于dfs.namenode.resource.du.reserved属性中指定的值(默认值为 100MB(时,它就会强制 Namenode 进入安全模式。

将其设置为3GB将期望此节点上的可用空间。但是数据节点将消耗其数据存储的所有可用空间,而不考虑名称节点的磁盘空间要求。

限制数据节点在此特定节点上的磁盘使用情况,将此属性添加到hdfs-site.xml

<property>
<name>dfs.datanode.du.reserved</name>
<value>3221225472</value>
<description>3GB of disk space reserved for non DFS usage. 
This space will be left unconsumed by the Datanode.
</description>
</property>

根据所需的阈值更改保留空间值。

最新更新