您的位置:首页 > 运维架构

Hadoop日志存放路径详解

2016-03-05 15:28 423 查看
  Hadoop的日志有很多种,很多初学者往往遇到错而不知道怎么办,其实这时候就应该去看看日志里面的输出,这样往往可以定位到错误。Hadoop的日志大致可以分为两类:(1)、Hadoop系统服务输出的日志;(2)、Mapreduce程序输出来的日志。这两类的日志存放的路径是不一样的。本文基于Hadoop
2.x版本进行说明的,其中有些地方在Hadoop1.x中是没有的,请周知。

  


一、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个日志文件,比如下面:

01
-rw-r--r--
1
wyp
wyp124MMar
14
17
:
01
yarn-wyp-resourcemanager-master.log
02
-rw-r--r--
1
wyp
wyp257MMar
9
10
:
02
yarn-wyp-resourcemanager-master.log.
1
03
-rw-r--r--
1
wyp
wyp257MFeb
4
09
:
05
yarn-wyp-resourcemanager-master.log.
10
04
-rw-r--r--
1
wyp
wyp257MFeb
1
17
:
04
yarn-wyp-resourcemanager-master.log.
11
05
-rw-r--r--
1
wyp
wyp257MJan
30
01
:
04
yarn-wyp-resourcemanager-master.log.
12
06
-rw-r--r--
1
wyp
wyp257MJan
26
04
:
01
yarn-wyp-resourcemanager-master.log.
13
07
-rw-r--r--
1
wyp
wyp257MJan
22
16
:
12
yarn-wyp-resourcemanager-master.log.
14
08
-rw-r--r--
1
wyp
wyp257MJan
20
17
:
14
yarn-wyp-resourcemanager-master.log.
15
09
-rw-r--r--
1
wyp
wyp257MJan
18
19
:
01
yarn-wyp-resourcemanager-master.log.
16
10
-rw-r--r--
1
wyp
wyp257MJan
15
15
:
21
yarn-wyp-resourcemanager-master.log.
17
11
-rw-r--r--
1
wyp
wyp257MJan
15
15
:
00
yarn-wyp-resourcemanager-master.log.
18
12
-rw-r--r--
1
wyp
wyp257MJan
15
14
:
40
yarn-wyp-resourcemanager-master.log.
19
13
-rw-r--r--
1
wyp
wyp257MMar
5
21
:
00
yarn-wyp-resourcemanager-master.log.
2
14
-rw-r--r--
1
wyp
wyp257MJan
15
14
:
20
yarn-wyp-resourcemanager-master.log.
20
15
-rw-r--r--
1
wyp
wyp257MFeb
23
00
:
00
yarn-wyp-resourcemanager-master.log.
3
16
-rw-r--r--
1
wyp
wyp257MFeb
20
08
:
05
yarn-wyp-resourcemanager-master.log.
4
17
-rw-r--r--
1
wyp
wyp257MFeb
17
17
:
04
yarn-wyp-resourcemanager-master.log.
5
18
-rw-r--r--
1
wyp
wyp257MFeb
15
01
:
05
yarn-wyp-resourcemanager-master.log.
6
19
-rw-r--r--
1
wyp
wyp257MFeb
12
09
:
00
yarn-wyp-resourcemanager-master.log.
7
20
-rw-r--r--
1
wyp
wyp257MFeb
9
17
:
08
yarn-wyp-resourcemanager-master.log.
8
21
-rw-r--r--
1
wyp
wyp257MFeb
7
01
:
10
yarn-wyp-resourcemanager-master.log.
9
上面这些都是可以配置的,比如resourcemanager(在${HADOOP_HOME}/etc/hadoop/log4j.properties):

01
log4j.logger.org.apache.hadoop.yarn.server.resourcemanager.RMAppManager
02
$ApplicationSummary=${yarn.server.resourcemanager.appsummary.logger}
03
log4j.additivity.org.apache.hadoop.yarn.server.resourcemanager
04
.RMAppManager$ApplicationSummary=
false
05
log4j.appender.RMSUMMARY=org.apache.log4j.RollingFileAppender
06
log4j.appender.RMSUMMARY.File=${hadoop.log.dir}/
07
${yarn.server.resourcemanager.appsummary.log.file}
08
log4j.appender.RMSUMMARY.MaxFileSize=256MB(多大切割日志)
09
log4j.appender.RMSUMMARY.MaxBackupIndex=
20
(说明保存最近
20
个日志文件)
10
log4j.appender.RMSUMMARY.layout=org.apache.log4j.PatternLayout
11
log4j.appender.RMSUMMARY.layout.ConversionPattern=%d{ISO8601}
%p%c{
2
}:
%m%n
resourcemanager日志存放路径也是可以配置的(在${HADOOP_HOME}/etc/hadoop/yarn-env.sh):

1
#
default
log
directory&file
2
if
[
"$YARN_LOG_DIR"
=
""
];
then
3
YARN_LOG_DIR=
"$HADOOP_YARN_HOME/logs"
4
fi
只需要修改YARN_LOG_DIR的值,这时候,yarn相关的日志记录都将存放在你配置的目录下。

  


二、Mapreduce程序相关的日志

  Mapreduce程序的日志可以分为历史作业日志和Container日志。

  (1)、历史作业的记录里面包含了一个作业用了多少个Map、用了多少个Reduce、作业提交时间、作业启动时间、作业完成时间等信息;这些信息对分析作业是很有帮助的,我们可以通过这些历史作业记录得到每天有多少个作业运行成功、有多少个作业运行失败、每个队列作业运行了多少个作业等很有用的信息。这些历史作业的信息是通过下面的信息配置的:

01
<property>
02
<name>mapreduce.jobhistory.done-dir</name>
03
<value>${yarn.app.mapreduce.am.staging-dir}/history/done</value>
04
</property>
05
06
<property>
07
<name>mapreduce.jobhistory.intermediate-done-dir</name>
08
<value>${yarn.app.mapreduce.am.staging-dir}
09
/history/done_intermediate</value>
10
</property>
11
12
<property>
13
<name>yarn.app.mapreduce.am.staging-dir</name>
14
<value>/tmp/hadoop-yarn/staging</value>
15
</property>
  更多关于Hadoop历史作业的信息,可以参考本博客的《Hadoop历史服务器详解》

  (2)、Container日志包含ApplicationMaster日志和普通Task日志等信息。默认情况下,这些日志信息是存放在${HADOOP_HOME}/logs/userlogs目录下,我们可以通过下面的配置进行修改:

01
<property>
02
<description>
03
Where
tostorecontainerlogs.Anapplication'slocalizedlogdirectory
04
will
befoundin${yarn.nodemanager.log-dirs}/application_${appid}.
05
Individual
containers'logdirectorieswillbebelow
this
,
in
06
directories
namedcontainer_{$contid}.Eachcontainerdirectorywill
07
contain
thefilesstderr,stdin,andsysloggeneratedbythatcontainer.
08
</description>
09
<name>yarn.nodemanager.log-dirs</name>
10
<value>${yarn.log.dir}/userlogs</value>
11
</property>
  熟悉Hadoop相关日志的存放地方不仅对运维Hadoop和观察Mapreduce的运行都是很有帮助的。

转载自过往记忆(http://www.iteblog.com/)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: