YARN参数调整
针对YARN参数的调整主要分为两个部分:磁盘容错和container容器的目录重新规划。
磁盘容错:
yarn-site.xml下的三个参数:
<property>
<name>yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage</name>
<value>99.0</value>
</property>
该参数表示每块盘符的最高使用比例,超过该值该盘就会被列入不健康列表,不再使用该盘符。默认值为90%,可更改至99%。
<property>
<name>yarn.nodemanager.disk-health-checker.min-free-space-per-disk-mb</name>
<value>51200</value>
</property>
每个盘符最少剩余空间大小,单位兆,当盘符剩余空间小于该值时,则不再使用该盘。默认为0,根据磁盘大小可更改至50G。
以上两个参数满足其中一条,则磁盘就会被列入unhealthy列表。
磁盘是指hdfs-site.xml中dfs.datanode.data.dir所对应的磁盘目录。
<property>
<name>yarn.nodemanager.disk-health-checker.min-healthy-disks</name>
<value>0.25</value>
</property>
该参数表示健康磁盘的比例,如果健康磁盘比例小于该值,则该NM不再接收container。
默认值为0.25,即如果该节点有3/4的磁盘在不健康列表里,则该节点无法正常运行yarn作业。该参数不做调整。
修改效果:
因目前天津大数据平台存储资源紧张,扩容主机迟迟未到,若以上参数不做更改,则必定会频繁出现nodemanager节点处于unhealthy状态,调整参数的目的在于充分使用磁盘剩余的10%资源,并且为hdfs预留出50G的缓冲空间。
container容器的目录重新规划
当前参数配置为:
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/e3base/hadoop/logs</value>
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>/e3base/hadoop/logs</value>
</property>
yarn.nodemanager.local-dirs参数为MR运行过程中,container存储本地化文件的目录列表,应用程序的本地化目录将在${yarn.nodemanager.local-dirs}/usercache/${user}/appcache/application_${appid}中找到,单个container容器的工作目录,将是本地化目录的子目录,如下图:
yarn.nodemanager.log-dirs该参数为存储container容器日志的位置,一个应用程序的本地化日志目录将在${yarn.nodemanager.log-dirs}/application_${appid}中找到。单个容器的日志目录将在其子目录中,在名为的目container_{$contid}录中。每个容器目录将包含由该容器生成的文件stderr, stdin,和 syslog信息,如下图:
集群目前这两个参数值都为/e3base/hadoop/logs,该目录下的文件都会在作业执行完毕后删除,但该过程中会产生大量的临时文件,导致/e3base目录频繁达到告警阈值。故可将该参数值更改为:
<property>
<name>yarn.nodemanager.local-dirs</name> <value>/chunkdata01/yarn/local,/chunkdata02/yarn/local,/chunkdata03/yarn/local,/chunkdata04/yarn/local,/chunkdata05/yarn/local,/chunkdata06/yarn/local,/chunkdata07/yarn/local,/chunkdata08/yarn/local,/chunkdata09/yarn/local,/chunkdata10/yarn/local</value>
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>/chunkdata01/yarn/logs,/chunkdata02/yarn/logs,/chunkdata03/yarn/logs,/chunkdata04/yarn/logs,/chunkdata05/yarn/logs,/chunkdata06/yarn/logs,/chunkdata07/yarn/logs,/chunkdata08/yarn/logs,/chunkdata09/yarn/logs,/chunkdata10/yarn/logs</value>
</property>
需要提前在/chunkdataxx目录下创建yarn/local,和yarn/logs目录,且更改权限为750。
注:节点磁盘数量可能会有差异。
效果:
更改参数之后,产生的临时文件分散在多个盘符中,减轻了/e3base目录的存储压力。