我有3个节点Hadoop 2.7.3集群,可以描述如下:
问题是在节点 A 上存在较高的磁盘使用率(约95%)。我想要实现的是限制磁盘使用量,使其永远不会超过85%
我尝试将dfs.namenode.resource.du.reserved
属性设置为大约3gb,但它无法解决我的问题,因为只要可用磁盘空间低于该值,我的Hadoop就会立即进入安全模式。
我知道所有必需的资源必须可供NN继续运行,并且只要任何冗余资源可用,NN将继续运行。
另外,我知道定义所需资源的dfs.namenode.edits.dir.required
属性,但我不认为使NN多余而不是必需是一个好主意。
所以我的问题与主题一样。我怎么能对Hadoop说:“嘿,听。这是一个datanode,把你想要的东西放在这里,但是如果磁盘使用率高于85%那么就不要惊慌 - 只要停止在这里放任何东西并继续做你的事情在DN的其余部分。“? 我错过了什么吗?它甚至可能吗?如果没有,那么你们建议我做什么?
答案 0 :(得分:2)
有一个名为Namenode资源检查程序的进程,它会扫描Namenode存储卷以获取可用的可用磁盘空间。只要可用空间低于<dependencyManagement>
属性中指定的值(默认为100MB),它就会强制Namenode进入safemode。
将其设置为 3GB 会期望此节点上有可用空间。但是,Datanode将消耗其数据存储的所有可用空间,而不考虑Namenode的磁盘空间要求。
限制此特定节点上datanode的磁盘使用情况,将此属性添加到dfs.namenode.resource.du.reserved
hdfs-site.xml
根据您所需的阈值更改保留空间值。