Yarn之日志分析

前言

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容