0747-5.16.2-YARN日誌聚合目錄說明

文檔編寫目的

日誌聚合是YARN提供的日誌集中化管理功能,它能將運行完成的Container任務日誌上傳到HDFS上,從而減輕NodeManager負載,且提供一個集中式存儲和分析機制。默認情況下,Container任務日誌存在在各個NodeManager上,如果啟用日誌聚集功能需要額外的配置。​本文需要介紹的yarn.nodemanager.remote-app-log-dir配置是當應用程序運行結束後,日誌被轉移到的HDFS目錄,默認是/tmp/logs。本文將模擬修改該目錄,然後又將其修改回默認。

  • 測試環境

1.CM和CDH版本均為5.16.2

2.集群正常運行

3.採用管理員用戶登錄CM

4.集群未啟用Kerberos安全認證


問題重現

2.1 默認配置下的MR日誌

1.集群當前運行正常

0747-5.16.2-YARN日誌聚合目錄說明


2.未修改配置前,YARN的yarn.nodemanager.remote-app-log-dir默認配置路徑為/tmp/logs

0747-5.16.2-YARN日誌聚合目錄說明


3.查看/tmp/logs目錄屬性如下:屬主為mapred,屬組為hadoop,目錄權限為777。

<code>hdfs dfs -ls /tmp//<code>
0747-5.16.2-YARN日誌聚合目錄說明


4.執行MR作業測試,可以正常執行

<code>hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 5 5/<code>
0747-5.16.2-YARN日誌聚合目錄說明

0747-5.16.2-YARN日誌聚合目錄說明


5.查看作業日誌,日誌可以正常查看

0747-5.16.2-YARN日誌聚合目錄說明

0747-5.16.2-YARN日誌聚合目錄說明

0747-5.16.2-YARN日誌聚合目錄說明

0747-5.16.2-YARN日誌聚合目錄說明


2.2 YARN配置修改後的日誌

1.查看當前HDFS上不存在/data0/tmp/logs目錄

<code>hdfs dfs -ls /hdfs dfs -ls /data0/tmp/logs/<code>
0747-5.16.2-YARN日誌聚合目錄說明


2.修改YARN的yarn.nodemanager.remote-app-log-dir配置為/data0/tmp/logs。然後保存更改,按照提示重啟YARN服務。

0747-5.16.2-YARN日誌聚合目錄說明


3.配置修改後集群運行正常

0747-5.16.2-YARN日誌聚合目錄說明


4.執行MR作業測試

<code>hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 5 5/<code>
0747-5.16.2-YARN日誌聚合目錄說明

0747-5.16.2-YARN日誌聚合目錄說明

如上所示,MR作業可以正常執行


5.查看作業日誌

0747-5.16.2-YARN日誌聚合目錄說明

如上所示,無法正常查看日誌。提示:

<code>Logs not available for job_1581405002681_0001.Aggregation may not be complete, Check back later or try the nodemanager athadoop03.focus.com:8041Or see application log athttp://hadoop03.focus.com:8041/node/application/application_1581405002681_0001/<code>


問題解決

3.1 方式一:自動創建日誌目錄

1.通過CM進入YARN服務界面,然後選擇【創建NodeManager遠程應用程序日誌目錄】。

0747-5.16.2-YARN日誌聚合目錄說明

0747-5.16.2-YARN日誌聚合目錄說明


2.執行上述操作後會在HDFS上生成/data/tmp/logs目錄,並且屬主:屬組為mapred:hadoop,目錄權限為1777

<code>hdfs dfs -ls /hdfs dfs -ls /data/tmp/<code>
0747-5.16.2-YARN日誌聚合目錄說明


3.執行MR作業

<code>hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 5 5/<code>
0747-5.16.2-YARN日誌聚合目錄說明

0747-5.16.2-YARN日誌聚合目錄說明


4.查看作業日誌

0747-5.16.2-YARN日誌聚合目錄說明

0747-5.16.2-YARN日誌聚合目錄說明

如上所示,日誌已被聚合到HDFS,可以正常查看


3.2 方式二:手動創建日誌目錄

1.在HDFS上創建/data/tmp/logs目錄

<code>sudo -u hdfs hdfs dfs -mkdir -p /data/tmp/logshdfs dfs -ls /hdfs dfs -ls /data/tmp//<code>
0747-5.16.2-YARN日誌聚合目錄說明


2.修改/data0/tmp/logs目錄的屬主和屬組為mapred:hadoop

<code>sudo -u hdfs hdfs dfs -chown mapred:hadoop /data/tmp/logshdfs dfs -ls /data/tmp//<code>
0747-5.16.2-YARN日誌聚合目錄說明


3.修改/data0/tmp/logs目錄訪問權限為1777

<code>sudo -u hdfs hdfs dfs -chmod 1777 /data/tmp/logshdfs dfs -ls /data/tmp//<code>
0747-5.16.2-YARN日誌聚合目錄說明


4.執行MR作業測試,作業正常執行

<code>hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 5 5/<code>
0747-5.16.2-YARN日誌聚合目錄說明

0747-5.16.2-YARN日誌聚合目錄說明


5.查看作業日誌

0747-5.16.2-YARN日誌聚合目錄說明

0747-5.16.2-YARN日誌聚合目錄說明

如上所示,MR作業日誌可以正常查看。


3.3 方式三:修改回默認目錄/tmp/logs

1.修改yarn.nodemanager.remote-app-log-dir參數配置為默認目錄/tmp/logs。保存後根據提示重啟相關服務

0747-5.16.2-YARN日誌聚合目錄說明


2.執行MR測試

<code>hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 5 5/<code>


0747-5.16.2-YARN日誌聚合目錄說明

0747-5.16.2-YARN日誌聚合目錄說明

MR作業正常執行


3.查看作業日誌

0747-5.16.2-YARN日誌聚合目錄說明

0747-5.16.2-YARN日誌聚合目錄說明

0747-5.16.2-YARN日誌聚合目錄說明

0747-5.16.2-YARN日誌聚合目錄說明


注意:無論是哪一種解決方式,對於無法查看日誌的作業仍然無法查看,只能通過命令行的形式在本地查看。如下所示:

在hadoop03節點上查看本地日誌


<code>cd /data0/yarn/container-logs/llll application_1581405002681_0001/ll application_1581405002681_0001/container_1581405002681_0001_01_000003//<code>


0747-5.16.2-YARN日誌聚合目錄說明

如上所示,作業job_1581319903607_0001的本地日誌(每個NodeManager節點上都存在一部分)仍然在本地存在,未被聚合到HDFS,因此在HistoryServer Web UI上仍然無法查看該作業日誌。


總結

1.在HistoryServer Web UI上查看YARN的歷史作業日誌需要開啟日誌聚合功能,即設置yarn.log-aggregation-enable參數為true。當任務運行結束後,YARN會把appmaster container任務的日誌都上傳到HDFS的地址中;每個用戶的作業在/tmp/logs下都有自己用戶名對應的日誌;比如,root用戶其作業在HDFS上日誌路徑為/tmp/logs/root/logs/。


2.YARN的yarn.nodemanager.remote-app-log-dir參數:應用程序運行結束後,日誌被轉移到的HDFS目錄(啟用日誌聚集功能時有效),默認為HDFS上的/tmp/logs

目錄。配置該參數時,如果其修改目錄不存在,則需要執行YARN服務界面的【創建NodeManager遠程應用程序日誌目錄】操作自動創建目錄或者手動創建屬主:屬組為mapred:hadoop,權限設置為1777的HDFS目錄;如果HDFS上該目錄已存在,但是由於目錄權限或屬主問題導致無法查看日誌,此時只能手動修改該目錄權限和屬主,不能通過YARN服務界面的【創建NodeManager遠程應用程序日誌目錄】操作來修改屬主和權限。


3.由於啟了日誌聚合功能(yarn.log-aggregation-enable),對於所有的MR作業,在作業執行完畢後會將本地日誌聚合到HDFS上指定目錄,在日誌聚合完畢後會自動刪除本地日誌。此時參數yarn.nodemanager.log.retain-seconds所設置的本地日誌保留時間是不生效的。


4.對於未被聚合到HDFS上的YARN作業日誌,日誌存儲在yarn.nodemanager.log-dirs參數所配置的目錄(每個NodeManager節點上都存在),只能通過命令行的形式在本地查看日誌信息。並且本地日誌不會被刪除,只能手動定期清理。


分享到:


相關文章: