一、聚合日志介紹
日志聚集是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作業日志生命周期
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小時)
【參考資料】