YARN調優----磁碟容錯和container容器的目錄重新規劃
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目錄的儲存壓力。