Hadoop日誌存放路徑詳解

  Hadoop的日誌有不少種,不少初學者每每遇到錯而不知道怎麼辦,其實這時候就應該去看看日誌裏面的輸出,這樣每每能夠定位到錯誤。Hadoop的日誌大體能夠分爲兩類:(1)、Hadoop系統服務輸出的日誌;(2)、Mapreduce程序輸出來的日誌。這兩類的日誌存放的路徑是不同的。本文基於Hadoop 2.x版本進行說明的,其中有些地方在Hadoop 1.x中是沒有的,請周知。
  node

1、Hadoop系統服務輸出的日誌

  諸如NameNode、DataNode、ResourceManage等系統自帶的服務輸出來的日誌默認是存放在${HADOOP_HOME}/logs目錄下。好比resourcemanager的輸出日誌爲yarn-${USER}-resourcemanager-${hostname}.log,其中${USER}s是指啓動resourcemanager進程的用戶,${hostname}是resourcemanager進程所在機器的hostname;當日志到達必定的大小(能夠在${HADOOP_HOME}/etc/hadoop/log4j.properties文件中配置)將會被切割出一個新的文件,切割出來的日誌文件名相似yarn-${USER}-resourcemanager-${hostname}.log.數字的,後面的數字越大,表明日誌越舊。在默認狀況下,只保存前20個日誌文件,好比下面:apache

-rw-r--r-- 1 wyp wyp 124M Mar 14 17:01 yarn-wyp-resourcemanager-master.logapp

-rw-r--r-- 1 wyp wyp 257M Mar  9 10:02 yarn-wyp-resourcemanager-master.log.1運維

-rw-r--r-- 1 wyp wyp 257M Feb  4 09:05 yarn-wyp-resourcemanager-master.log.10oop

-rw-r--r-- 1 wyp wyp 257M Feb  1 17:04 yarn-wyp-resourcemanager-master.log.11this

-rw-r--r-- 1 wyp wyp 257M Jan 30 01:04 yarn-wyp-resourcemanager-master.log.12spa

-rw-r--r-- 1 wyp wyp 257M Jan 26 04:01 yarn-wyp-resourcemanager-master.log.13日誌

-rw-r--r-- 1 wyp wyp 257M Jan 22 16:12 yarn-wyp-resourcemanager-master.log.14code

-rw-r--r-- 1 wyp wyp 257M Jan 20 17:14 yarn-wyp-resourcemanager-master.log.15server

-rw-r--r-- 1 wyp wyp 257M Jan 18 19:01 yarn-wyp-resourcemanager-master.log.16

-rw-r--r-- 1 wyp wyp 257M Jan 15 15:21 yarn-wyp-resourcemanager-master.log.17

-rw-r--r-- 1 wyp wyp 257M Jan 15 15:00 yarn-wyp-resourcemanager-master.log.18

-rw-r--r-- 1 wyp wyp 257M Jan 15 14:40 yarn-wyp-resourcemanager-master.log.19

-rw-r--r-- 1 wyp wyp 257M Mar  5 21:00 yarn-wyp-resourcemanager-master.log.2

-rw-r--r-- 1 wyp wyp 257M Jan 15 14:20 yarn-wyp-resourcemanager-master.log.20

-rw-r--r-- 1 wyp wyp 257M Feb 23 00:00 yarn-wyp-resourcemanager-master.log.3

-rw-r--r-- 1 wyp wyp 257M Feb 20 08:05 yarn-wyp-resourcemanager-master.log.4

-rw-r--r-- 1 wyp wyp 257M Feb 17 17:04 yarn-wyp-resourcemanager-master.log.5

-rw-r--r-- 1 wyp wyp 257M Feb 15 01:05 yarn-wyp-resourcemanager-master.log.6

-rw-r--r-- 1 wyp wyp 257M Feb 12 09:00 yarn-wyp-resourcemanager-master.log.7

-rw-r--r-- 1 wyp wyp 257M Feb  9 17:08 yarn-wyp-resourcemanager-master.log.8

-rw-r--r-- 1 wyp wyp 257M Feb  7 01:10 yarn-wyp-resourcemanager-master.log.9

上面這些都是能夠配置的,好比resourcemanager(在${HADOOP_HOME}/etc/hadoop/log4j.properties):

log4j.logger.org.apache.hadoop.yarn.server.resourcemanager.RMAppManager

          $ApplicationSummary=${yarn.server.resourcemanager.appsummary.logger}

log4j.additivity.org.apache.hadoop.yarn.server.resourcemanager

                                    .RMAppManager$ApplicationSummary=false

log4j.appender.RMSUMMARY=org.apache.log4j.RollingFileAppender

log4j.appender.RMSUMMARY.File=${hadoop.log.dir}/

                        ${yarn.server.resourcemanager.appsummary.log.file}

log4j.appender.RMSUMMARY.MaxFileSize=256MB(多大切割日誌)

log4j.appender.RMSUMMARY.MaxBackupIndex=20(說明保存最近20個日誌文件)

log4j.appender.RMSUMMARY.layout=org.apache.log4j.PatternLayout

log4j.appender.RMSUMMARY.layout.ConversionPattern=%d{ISO8601} %p %c{2}: %m%n

resourcemanager日誌存放路徑也是能夠配置的(在${HADOOP_HOME}/etc/hadoop/yarn-env.sh):

# default log directory & file

if [ "$YARN_LOG_DIR" = "" ]; then

  YARN_LOG_DIR="$HADOOP_YARN_HOME/logs"

fi

只須要修改YARN_LOG_DIR的值,這時候,yarn相關的日誌記錄都將存放在你配置的目錄下。
  

2、Mapreduce程序相關的日誌

  Mapreduce程序的日誌能夠分爲歷史做業日誌和Container日誌。
  (1)、歷史做業的記錄裏面包含了一個做業用了多少個Map、用了多少個Reduce、做業提交時間、做業啓動時間、做業完成時間等信息;這些信息對分析做業是頗有幫助的,咱們能夠經過這些歷史做業記錄獲得天天有多少個做業運行成功、有多少個做業運行失敗、每一個隊列做業運行了多少個做業等頗有用的信息。這些歷史做業的信息是經過下面的信息配置的:

<property>

    <name>mapreduce.jobhistory.done-dir</name>

    <value>${yarn.app.mapreduce.am.staging-dir}/history/done</value>

</property>

  

<property>

    <name>mapreduce.jobhistory.intermediate-done-dir</name>

    <value>${yarn.app.mapreduce.am.staging-dir}

                         /history/done_intermediate</value>

</property>

  

<property>

    <name>yarn.app.mapreduce.am.staging-dir</name>

    <value>/tmp/hadoop-yarn/staging</value>

</property>

  (2)、Container日誌包含ApplicationMaster日誌和普通Task日誌等信息。默認狀況下,這些日誌信息是存放在${HADOOP_HOME}/logs/userlogs目錄下,咱們能夠經過下面的配置進行修改:

<property>

    <description>

      Where to store container logs. An application's localized log directory

      will be found in ${yarn.nodemanager.log-dirs}/application_${appid}.

      Individual containers' log directories will be below this, in

      directories  named container_{$contid}. Each container directory will

      contain the files stderr, stdin, and syslog generated by that container.

    </description>

    <name>yarn.nodemanager.log-dirs</name>

    <value>${yarn.log.dir}/userlogs</value>

</property>

 

3.日誌彙集相關配置參數

日誌彙集是YARN提供的日誌中央化管理功能,它能將運行完成的Container/任務日誌上傳到HDFS上,從而減輕NodeManager負載,且提供一箇中央化存儲和分析機制。默認狀況下,Container/任務日誌存在在各個NodeManager上,若是啓用日誌彙集功能須要額外的配置。

(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

(5) yarn.log-aggregation.retain-seconds

參數解釋:遠程日誌目錄子目錄名稱(啓用日誌彙集功能時有效)。

默認值:日誌將被轉移到目錄${yarn.nodemanager.remote-app-log-dir}/${user}/${thisParam}下

 若是hdfs日誌路徑使用默認值,則能夠在/tmp/logs目錄下找到全部用戶的application運行日誌。

 

熟悉Hadoop相關日誌的存放地方不只對運維Hadoop和觀察Mapreduce的運行都是頗有幫助的。

參考連接:

http://www.iteblog.com/archives/896

http://dongxicheng.org/mapreduce-nextgen/hadoop-yarn-configurations-log-aggregation/

http://stackoverflow.com/questions/32713587/how-to-keep-yarns-log-files

相關文章
相關標籤/搜索