hadoop日志存放路径(日志讲解好文章)&hadoop历史服务器
来源:互联网 发布:linux查看cpu进程 编辑:程序博客网 时间:2024/05/19 03:19
一、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 wyp 124M Mar
14
17
:
01
yarn-wyp-resourcemanager-master.log
02
-rw-r--r--
1
wyp wyp 257M Mar
9
10
:
02
yarn-wyp-resourcemanager-master.log.
1
03
-rw-r--r--
1
wyp wyp 257M Feb
4
09
:
05
yarn-wyp-resourcemanager-master.log.
10
04
-rw-r--r--
1
wyp wyp 257M Feb
1
17
:
04
yarn-wyp-resourcemanager-master.log.
11
05
-rw-r--r--
1
wyp wyp 257M Jan
30
01
:
04
yarn-wyp-resourcemanager-master.log.
12
06
-rw-r--r--
1
wyp wyp 257M Jan
26
04
:
01
yarn-wyp-resourcemanager-master.log.
13
07
-rw-r--r--
1
wyp wyp 257M Jan
22
16
:
12
yarn-wyp-resourcemanager-master.log.
14
08
-rw-r--r--
1
wyp wyp 257M Jan
20
17
:
14
yarn-wyp-resourcemanager-master.log.
15
09
-rw-r--r--
1
wyp wyp 257M Jan
18
19
:
01
yarn-wyp-resourcemanager-master.log.
16
10
-rw-r--r--
1
wyp wyp 257M Jan
15
15
:
21
yarn-wyp-resourcemanager-master.log.
17
11
-rw-r--r--
1
wyp wyp 257M Jan
15
15
:
00
yarn-wyp-resourcemanager-master.log.
18
12
-rw-r--r--
1
wyp wyp 257M Jan
15
14
:
40
yarn-wyp-resourcemanager-master.log.
19
13
-rw-r--r--
1
wyp wyp 257M Mar
5
21
:
00
yarn-wyp-resourcemanager-master.log.
2
14
-rw-r--r--
1
wyp wyp 257M Jan
15
14
:
20
yarn-wyp-resourcemanager-master.log.
20
15
-rw-r--r--
1
wyp wyp 257M Feb
23
00
:
00
yarn-wyp-resourcemanager-master.log.
3
16
-rw-r--r--
1
wyp wyp 257M Feb
20
08
:
05
yarn-wyp-resourcemanager-master.log.
4
17
-rw-r--r--
1
wyp wyp 257M Feb
17
17
:
04
yarn-wyp-resourcemanager-master.log.
5
18
-rw-r--r--
1
wyp wyp 257M Feb
15
01
:
05
yarn-wyp-resourcemanager-master.log.
6
19
-rw-r--r--
1
wyp wyp 257M Feb
12
09
:
00
yarn-wyp-resourcemanager-master.log.
7
20
-rw-r--r--
1
wyp wyp 257M Feb
9
17
:
08
yarn-wyp-resourcemanager-master.log.
8
21
-rw-r--r--
1
wyp wyp 257M Feb
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>
(2)、Container日志包含ApplicationMaster日志和普通Task日志等信息。默认情况下,这些日志信息是存放在${HADOOP_HOME}/logs/userlogs目录下,我们可以通过下面的配置进行修改:
01
<property>
02
<description>
03
Where to store container logs. An application's localized log directory
04
will be found in ${yarn.nodemanager.log-dirs}/application_${appid}.
05
Individual containers' log directories will be below
this
, in
06
directories named container_{$contid}. Each container directory will
07
contain the files stderr, stdin, and syslog generated by that container.
08
</description>
09
<name>yarn.nodemanager.log-dirs</name>
10
<value>${yarn.log.dir}/userlogs</value>
11
</property>
熟悉Hadoop相关日志的存放地方不仅对运维Hadoop和观察Mapreduce的运行都是很有帮助的。
Hadoop自带了一个历史服务器,可以通过历史服务器查看已经运行完的Mapreduce作业记录,比如用了多少个Map、用了多少个Reduce、作业提交时间、作业启动时间、作业完成时间等信息。默认情况下,Hadoop历史服务器是没有启动的,我们可以通过下面的命令来启动Hadoop历史服务器
1
$ sbin/mr-jobhistory-daemon.sh start historyserver
这样我们就可以在相应机器的19888端口上打开历史服务器的WEB UI界面。可以查看已经运行完的作业情况。历史服务器可以单独在一台机器上启动,主要是通过以下的参数配置:
1
<property>
2
<name>mapreduce.jobhistory.address</name>
3
<value>
0.0
.
0.0
:
10020
</value>
4
</property>
5
6
<property>
7
<name>mapreduce.jobhistory.webapp.address</name>
8
<value>
0.0
.
0.0
:
19888
</value>
9
</property>
上面的参数是在mapred-site.xml文件中进行配置,mapreduce.jobhistory.address和mapreduce.jobhistory.webapp.address默认的值分别是0.0.0.0:10020和0.0.0.0:19888,大家可以根据自己的情况进行相应的配置,参数的格式是host:port。配置完上述的参数之后,重新启动Hadoop jobhistory,这样我们就可以在mapreduce.jobhistory.webapp.address参数配置的主机上对Hadoop历史作业情况经行查看。
很多人就会问了,这些历史数据是存放在哪里的?是存放在HDFS中的,我们可以通过下面的配置来设置在HDFS的什么目录下存放历史作业记录:
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>
上面的配置都默认的值,我们可以在mapred-site.xml文件中进行修改。其中,mapreduce.jobhistory.done-dir参数的意思是在什么目录下存放已经运行完的Hadoop作业记录;mapreduce.jobhistory.intermediate-done-dir的意思是正在运行的Hadoop作业记录。我们可以到mapreduce.jobhistory.done-dir参数配置的目录下看看里面存放的是什么东西:
01
[wyp
@master
/home/wyp/hadoop]# bin/hadoop fs -ls /jobs/done/
02
Found
2
items
03
drwxrwx--- - wyp supergroup
0
2013
-
12
-
03
23
:
36
/jobs/done/
2013
04
drwxrwx--- - wyp supergroup
0
2014
-
02
-
01
00
:
02
/jobs/done/
2014
05
06
[wyp
@master
/home/wyp/hadoop]# bin/hadoop fs -ls /jobs/done/
2014
/
02
/
16
07
Found
27
items
08
drwxrwx--- - wyp supergroup
0
2014
-
02
-
16
02
:
02
/jobs/done/
2014
/
02
/
16
/
001216
09
drwxrwx--- - wyp supergroup
0
2014
-
02
-
16
02
:
44
/jobs/done/
2014
/
02
/
16
/
001217
10
drwxrwx--- - wyp supergroup
0
2014
-
02
-
16
03
:
38
/jobs/done/
2014
/
02
/
16
/
001218
11
drwxrwx--- - wyp supergroup
0
2014
-
02
-
16
04
:
20
/jobs/done/
2014
/
02
/
16
/
001219
12
drwxrwx--- - wyp supergroup
0
2014
-
02
-
16
05
:
14
/jobs/done/
2014
/
02
/
16
/
001220
13
14
[wyp
@master
hadoop]# bin/hadoop fs -ls /jobs/done/
2014
/
02
/
16
/
001216
15
Found
1318
items
16
-rwxrwx---
3
wyp supergroup
45541335
2014
-
02
-
16
00
:
11
/jobs/done/
2014
17
/
02
/
16
/
001216
/job_1388830974669_1216161-
1392478837250
-wyp-insert+overwrite
18
+table+qt_city_query_ana...e%28Stage-
1392480689141
-
5894
-
33
-SUCCEEDED-wyp.jhist
19
-rwxrwx---
3
wyp supergroup
193572
2014
-
02
-
16
00
:
11
/jobs/done
20
/
2014
/
02
/
16
/
001216
/job_1388830974669_1216161_conf.xml
21
-rwxrwx---
3
wyp supergroup
45594759
2014
-
02
-
16
00
:
11
/jobs/done/
2014
22
/
02
/
16
/
001216
/job_1388830974669_1216162-
1392478837250
-wyp-insert+overwrite
23
+table+qt_city_query_ana...e%28Stage-
1392480694818
-
5894
-
33
-SUCCEEDED-wyp.jhist
24
-rwxrwx---
3
wyp supergroup
193572
2014
-
02
-
16
00
:
11
/jobs/done
25
/
2014
/
02
/
16
/
001216
/job_1388830974669_1216162_conf.xml
通过上面的结果我们可以得到一下几点:
(1)、历史作业记录是存放在HDFS目录中;
(2)、由于历史作业记录可能非常多,所以历史作业记录是按照年/月/日的形式分别存放在相应的目录中,这样便于管理和查找;
(3)、对于每一个Hadoop历史作业记录相关信息都用两个文件存放,后缀名分别为*.jhist,*.xml。*.jhist文件里存放的是具体Hadoop作业的详细信息,如下:
01
{
02
"type"
:
"JOB_INITED"
,
03
"event"
: {
04
"org.apache.hadoop.mapreduce.jobhistory.JobInited"
: {
05
"jobid"
:
"job_1388830974669_1215999"
,
06
"launchTime"
:
1392477383583
,
07
"totalMaps"
:
1
,
08
"totalReduces"
:
1
,
09
"jobStatus"
:
"INITED"
,
10
"uberized"
:
false
11
}
12
}
13
}
这是Hadoop JOB初始化的一条信息,通过观察我们知道,*.jhist文件里面全部都是Json格式的数据。根据type进行区分这条Json的含义,在Hadoop中,总共包含了一下几个type:
01
"JOB_SUBMITTED"
,
02
"JOB_INITED"
,
03
"JOB_FINISHED"
,
04
"JOB_PRIORITY_CHANGED"
,
05
"JOB_STATUS_CHANGED"
,
06
"JOB_FAILED"
,
07
"JOB_KILLED"
,
08
"JOB_ERROR"
,
09
"JOB_INFO_CHANGED"
,
10
"TASK_STARTED"
,
11
"TASK_FINISHED"
,
12
"TASK_FAILED"
,
13
"TASK_UPDATED"
,
14
"NORMALIZED_RESOURCE"
,
15
"MAP_ATTEMPT_STARTED"
,
16
"MAP_ATTEMPT_FINISHED"
,
17
"MAP_ATTEMPT_FAILED"
,
18
"MAP_ATTEMPT_KILLED"
,
19
"REDUCE_ATTEMPT_STARTED"
,
20
"REDUCE_ATTEMPT_FINISHED"
,
21
"REDUCE_ATTEMPT_FAILED"
,
22
"REDUCE_ATTEMPT_KILLED"
,
23
"SETUP_ATTEMPT_STARTED"
,
24
"SETUP_ATTEMPT_FINISHED"
,
25
"SETUP_ATTEMPT_FAILED"
,
26
"SETUP_ATTEMPT_KILLED"
,
27
"CLEANUP_ATTEMPT_STARTED"
,
28
"CLEANUP_ATTEMPT_FINISHED"
,
29
"CLEANUP_ATTEMPT_FAILED"
,
30
"CLEANUP_ATTEMPT_KILLED"
,
31
"AM_STARTED"
而*.xml文件里面记录的是相应作业运行时候的完整参数配置,大家可以进去查看一下。
(4)、每一个作业的历史记录都存放在一个单独的文件中。
mapreduce.jobhistory.intermediate-done-dir配置的目录下主要存放的是当前正在运行的Hadoop任务的记录相关信息,感兴趣的同学可以进去看看,这里就不介绍了。
如果对Hadoop历史服务器WEB UI上提供的数据不满意,我们就可以通过对mapreduce.jobhistory.done-dir配置的目录进行分析,得到我们感兴趣的信息,比如统计某天中运行了多少个map、运行最长的作业用了多少时间、每个用户运行的Mapreduce任务数、总共运行了多少Mapreduce数等信息,这样对监控Hadoop集群是很好的,我们可以根据那些信息来确定怎么给某个用户分配资源等等。
1
<property>
2
<name>mapreduce.jobhistory.joblist.cache.size</name>
3
<value>
20000
</value>
4
</property>
尊重原创,转载请注明: 转载自过往记忆(http://www.iteblog.com/)
本文链接: 【Hadoop历史服务器详解】(http://www.iteblog.com/archives/936)
- hadoop日志存放路径(日志讲解好文章)&hadoop历史服务器
- Hadoop日志存放路径详解
- Hadoop日志存放路径详解
- Hadoop日志存放路径详解
- Hadoop之日志存放路径
- Hadoop日志存放路径详解
- hadoop之 hadoop日志存放路径
- hadoop 日志及历史服务器
- hadoop 日志存放位置
- Hadoop日志存放位置
- Hadoop日志存放目录
- Hadoop日志存放问题
- hadoop日志存放位置
- Hadoop 历史服务器与日志详解
- Hadoop 历史服务器与日志详解
- hadoop 日志存放位置总结
- Hadoop之历史服务器与日志聚合和文件权限
- hadoop提交任务后日志存放问题
- ScrollView实现类似QQ可拉动
- 数据库笔记
- java 实现大数的阶乘
- 堆排序讲解及Java实现
- Sublime Text3 支持Less
- hadoop日志存放路径(日志讲解好文章)&hadoop历史服务器
- 算法学习(九)回文的判断
- nyoj_18 The Triangle
- android开发步步为营之101:动态调整view的宽度和高度以及在页面的坐标位置
- @Param 注解在Mybatis中的使用 以及传递参数的三种方式
- 楼燚(yì)航的blog URL
- 发布项目到GitHub
- 【leetcode】105. Construct Binary Tree from Preorder and Inorder Traversal
- PHP防止表单重复提交的几种常用方法