前言
Yarn中的id種類繁多,比較亂,下面整理下yarn中常出現(xiàn)的幾種id,分別介紹一下。
1)jobId
描述:出自MapReduce,對作業(yè)的唯一標(biāo)識。
格式:job_${clusterStartTime}_${jobid}
例子:job_1498552288473_2742
2)applicationId
描述:在yarn中對作業(yè)的唯一標(biāo)識。
格式:application_${clusterStartTime}_${applicationId}
例子:application_1498552288473_2742
3)taskId
描述:作業(yè)中的任務(wù)的唯一標(biāo)識
格式:task_${clusterStartTime}_${applicationId}_[m|r]_${taskId}
例子:task_1498552288473_2742_m_000000、task_1498552288473_2742_r_000000
4)attempId
描述:任務(wù)嘗試執(zhí)行的一次id
格式:attempt_${clusterStartTime}_${applicationId}_[m|r]_${taskId}_${attempId}
例子:attempt_1498552288473_2742_m_000000_0
5)appAttempId
描述:ApplicationMaster的嘗試執(zhí)行的一次id。
格式:appattempt_${clusterStartTime}_${applicationId}_${appAttempId}
例子:appattempt_1498552288473_2742_000001
6)containerId:
描述:container的id
格式:container_e*epoch*_${clusterStartTime}_${applicationId}_${appAttempId}_${containerId}
例子:container_e20_1498552288473_2742_01_000032、container_1498552288473_2742_01_000032
一、yarn中的幾種日志
- 服務(wù)類日志
諸如ResourceManage、NodeManager等系統(tǒng)自帶的服務(wù)輸出來的日志默認(rèn)是存放在${HADOOP_HOME}/logs目錄下,此參數(shù)可以通過參數(shù)YARN_LOG_DIR(yarn-env.sh配置文件,當(dāng)前配置為:/data1/hadoop/logs/$USER)指定。比如resourcemanager的輸出日志為yarn-${USER}-resourcemanager-${hostname}.log,其中${USER}s是指啟動resourcemanager進(jìn)程的用戶,${hostname}是resourcemanager進(jìn)程所在機器的hostname,nodemanager的輸出日志格式為:yarn-${USER}-nodemanager-${hostname}.log,這類日志可以查看當(dāng)前resourcemanager和nodemanager兩個服務(wù)的運行情況。日志路徑: /data1/hadoop/logs/yarn - 任務(wù)日志
1)作業(yè)的統(tǒng)計日志:
歷史作業(yè)的記錄里面包含了一個作業(yè)用了多少個Map、用了多少個Reduce、作業(yè)提交時間、作業(yè)啟動時間、作業(yè)完成時間等信息;這些信息對分析作業(yè)是很有幫助的,我們可以通過這些歷史作業(yè)記錄得到每天有多少個作業(yè)運行成功、有多少個作業(yè)運行失敗、每個隊列作業(yè)運行了多少個作業(yè)等很有用的信息。這部分日志會用于JobHistoryServer。
相關(guān)參數(shù):
key : apreduce.jobhistory.done-dir
value : /var/hadoop/mapred/mr-history/done
key : mapreduce.jobhistory.intermediate-done-dir
value :/var/hadoop/mapred/mr-history/tmp
2)作業(yè)的運行日志:
Container日志包含ApplicationMaster日志和普通Task日志等信息,主要包含container的啟動腳本,還有container的運行日志。默認(rèn)情況下,這些日志信息是存放在${HADOOP_HOME}/logs/userlogs目錄下,我們可以通過下面的配置進(jìn)行修改。
相關(guān)參數(shù):
key : yarn.nodemanager.log-dirs
value : /data1/hadoop/yarn/log,/data14/hadoop/yarn/log,/data12/hadoop/yarn/log,/data7/hadoop/yarn/log,/data8/hadoop/yarn/log,/data6/hadoop/yarn/log,/data13/hadoop/yarn/log,/data4/h
adoop/yarn/log,/data9/hadoop/yarn/log,/data11/hadoop/yarn/log,/data5/hadoop/yarn/log,/data2/hadoop/yarn/log,/data15/hadoop/yarn/log,/data3/hadoop/yarn/log,/data10/hadoop/yarn/log,/data1
6/hadoop/yarn/log
二、日志的聚合
從上面作業(yè)的運行日志中可以發(fā)現(xiàn),container的日志在一臺機器的16塊盤上都會存在日志,而且并不知道container的日志會在哪個盤上,默認(rèn)情況下,每塊盤上都會創(chuàng)建相同的applicationid,而且applicationid中都會創(chuàng)建相同的containerid,但是并不是每個container中都會存在日志,這塊由container自己的機制選擇往哪個container目錄中寫入日志,其他的container目錄則為空。這在一定程度上導(dǎo)致了想查看任務(wù)的運行日志比較困難。
日志的聚合功能可以解決這個問題。
開啟此項功能:
key : yarn.log-aggregation-enable
value : true
此項功能會把各nodemanager上的application的所有盤上的container上傳到hdfs
相關(guān)參數(shù):
key : yarn.nodemanager.remote-app-log-dir
value : /var/hadoop/yarn
key : yarn.nodemanager.remote-app-log-dir-suffix
value: logs
hdfs上路徑:
/var/hadoop/yarn/${user}/logs
查看日志的方式
1)通過web頁面
2)命令行 yarn logs -applicationId ${applicationId}
三、日志聚合的機制

image.png
四、日志清理
相關(guān)參數(shù):
key : mapreduce.jobhistory.max-age-ms
value : 2592000000 (30天)
descrption:負(fù)責(zé)清理hdfs路徑下日志 /var/hadoop/mapred/mr-history/done
key : yarn.log-aggregation.retain-seconds
value : 2592000 (30天)
description:負(fù)責(zé)清理hdfs路徑下日志 /var/hadoop/yarn/${user}/logs
服務(wù)器上的本地日志在任務(wù)執(zhí)行完進(jìn)行日志聚合之后會自動進(jìn)行刪除,不過老數(shù)據(jù)目前還沒有清理。
五、日志相關(guān)參數(shù)
1) yarn.log-aggregation-enable
是否開啟日志聚合功能
2) yarn.log-aggregation.retain-seconds
hdfs上的日志保留多久。當(dāng)前配置路徑為:/var/hadoop/yarn/${user}/logs
3) yarn.log-aggregation.retain-check-interval-seconds
多長時間檢查一次日志,并將滿足條件的刪除,如果是0或者負(fù)數(shù),則為上一個值的1/10,已經(jīng)配置為:1296000(15天)
4) yarn.nodemanager.remote-app-log-dir
前綴目錄:/var/hadoop/yarn
5) yarn.nodemanager.remote-app-log-dir-suffix
后綴目錄:logs
6) yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds
每隔一段時間進(jìn)行日志的聚合,當(dāng)前配置為:3600。如果配置為-1,則會等待任務(wù)執(zhí)行完還會聚合
六、其他
關(guān)于清理日志的方法
1.NonAggregatingLogHandler