日志聚集是YARN提供的日志中央化管理功能,它能將運行完成的Container/任務日志上傳到HDFS上,從而減輕NodeManager負載,且提供一個中央化存儲和分析機制。默認情況下,Container/任務日志存在在各個NodeManager上,如果啟用日志聚集功能需要額外的配置。
這個日志存儲的就是具體map和reduce的日志,包括框架的和應用程序里自己打印的。這個日志聚合是用來看日志的,而mapreduce job history server,則是用來看某個application的大致統計信息的,包括啟停時間,map任務數,reduce任務數以及各種計數器的值等等。job history server是抽象概要性的統計信息,而聚合日志是該application所有任務節點的詳細日志集合。
查看日志的命令:$HADOOP_HOME/bin/yarn logs -applicationId <app Id>。app id在你命令行執行mapreduce任務的
時候會出現的,比如會出現這么一行:
15/03/16 20:14:27 INFO mapreduce.Job: The url to track the job: http://ylhadoop126:8088/proxy/application_1426507165782_0002/。
或者去你配置的yarn.nodemanager.remote-app-log-dir所指定的hdfs路徑找,具體路徑格式為${yarn.nodemanager.remote-app-log-dir}/$user/logs/${app Id}/$nodelog
要實現日志聚集,只需要在yarn-site.xml中配置如下幾個參數:
(1) yarn.log-aggregation-enable
參數解釋:是否啟用日志聚集功能。
默認值:false
(2) yarn.log-aggregation.retain-seconds
參數解釋:在HDFS上聚集的日志最多保存多長時間。
默認值:-1
(3) yarn.log-aggregation.retain-check-interval-seconds
參數解釋:多長時間檢查一次日志,並將滿足條件的刪除,如果是0或者負數,則為上一個值的1/10。
默認值:-1
(4) yarn.nodemanager.remote-app-log-dir
參數解釋:當應用程序運行結束后,日志被轉移到的HDFS目錄(啟用日志聚集功能時有效)。
默認值:/tmp/logs
