天天看點

Yarn聚合日志

一、聚合日志介紹

日志聚集是YARN提供的日志中央化管理功能,它能将運作完成的Container任務日志上傳到HDFS上,進而減輕NodeManager負載,且提供一個中央化存儲和分析機制。預設情況下,Container 任務日志存在在各個NodeManager上,儲存在"yarn.nodemanager.log-dirs"配置的目錄下,儲存的時間由"yarn.nodemanager.log.retain-seconds"參數決定(預設時3小時)。啟用日志聚集功能,會将完成的日志上傳到HDFS的 "${yarn.nodemanager.remote-app-log-dir}/${user}/${yarn.nodemanager.remote-app-log-dir-suffix}"下,要實作日志聚合功能,需要額外的配置。

這裡的日志存儲的就是具體Mapreduce和Spark任務的日志,包括架構的和應用程式裡自己列印的。這日志聚合是用來看日志的,而job history server,則是用來看某個application的大緻統計資訊的,包括啟停時間,map任務數,reduce任務數以及各種計數器的值等等。job history server是抽象概要性的統計資訊,而聚合日志是該application所有任務節點的詳細日志集合。

二、Yarn作業日志生命周期

Yarn作業在運作過程中,聚合日志的生命周期如下:

1. MR運作過程中,日志将暫存于yarn.nodemanager.log-dirs配置項指定的本地路徑下,預設為/var/log/hadoop-yarn/container。

2. MR運作結束後(無論正常結束與否),将持久化日志到yarn.nodemanager.remote-app-log-dir和yarn.nodemanager.remote-app-log-dir-suffix配置項指定的HDFS路徑下,前者預設為/tmp/logs,後者預設為logs。HDFS的實際路徑為${yarn.nodemanager.remote-app-log-dir}/${user}/${yarn.nodemanager.remote-app-log-dir-suffix}/${application_id}。

3. 日志持久化後,會删除本地的暫存日志。

4. HDFS聚合日志儲存周期 yarn.log-aggregation.retain-seconds,叢集參數設定保留時間。

三、聚合日志相關參數

yarn.nodemanager.log-dirs
參數解釋:日志存放位址(可配置多個目錄)。
預設值:${yarn.log.dir}/userlogs

yarn.log-aggregation-enable
參數解釋:是否啟用日志聚集功能。
預設值:false

yarn.log-aggregation.retain-seconds
參數解釋:在HDFS上聚集的日志最多儲存多長時間。
預設值:-1

yarn.log-aggregation.retain-check-interval-seconds
參數解釋:多長時間檢查一次日志,并将滿足條件的删除,如果是0或者負數,則為上一個值的1/10。
預設值:-1

yarn.nodemanager.remote-app-log-dir
參數解釋:當應用程式運作結束後,日志被轉移到的HDFS目錄(啟用日志聚集功能時有效)。
預設值:/tmp/logs

yarn.nodemanager.remote-app-log-dir-suffix
參數解釋:遠端日志目錄子目錄名稱(啟用日志聚集功能時有效)。
預設值:logs 日志将被轉移到目錄${yarn.nodemanager.remote-app-log-dir}/${user}/${thisParam}下

yarn.nodemanager.log.retain-seconds
參數解釋:NodeManager上日志最多存放時間(不啟用日志聚集功能時有效)。
預設值:10800(3小時)      

繼續閱讀