配置日志归档和清理机制
配置场景
执行一个MapReduce应用会产生两种类型日志文件:作业日志和任务日志。
- 作业日志由MRApplicationMaster产生,详细记录了作业启动时间、运行时间,每个任务启动时间、运行时间、Counter值等信息。此日志内容被HistoryServer解析以后用于查看作业执行的详细信息。
- 任务日志记录了每个运行在Container中的任务输出的日志信息。默认情况下,任务日志只会存放在各NodeManager的本地磁盘上。打开日志聚合功能后,NodeManager会在作业运行完成后将本地的任务日志进行合并,写入到HDFS中。
由于MapReduce的作业日志和任务日志(聚合功能开启的情况下)都保存在HDFS上。对于计算任务量大的集群,如果不进行合理的配置对日志文件进行定期归档和删除,日志文件将占用HDFS大量内存空间,增加集群负载。
日志归档是通过Hadoop Archives功能实现的,Hadoop Archives启动的并行归档任务数(Map数)与待归档的日志文件总大小有关。计算公式为:并行归档任务数=待归档的日志文件总大小/归档文件大小。
配置描述
进入Mapreduce服务参数“全部配置”界面,具体操作请参考修改集群服务配置参数章节。
在搜索框中输入参数名称。同时需要在Mapreduce客户端节点的“客户端安装目录/HDFS/hadoop/etc/hadoop/”路径下的“mapred-site.xml”配置文件中进行如下配置。
参数 |
描述 |
默认值 |
---|---|---|
mapreduce.jobhistory.cleaner.enable |
是否开启作业日志文件清理功能。 |
true |
mapreduce.jobhistory.cleaner.interval-ms |
作业日志文件清理启动周期。只有保留时间比“mapreduce.jobhistory.max-age-ms”更长的日志文件才会被清除。 |
86400000(1 天) |
mapreduce.jobhistory.max-age-ms |
比此项设置的毫秒数保留时间更长的作业日志文件将被清理。 |
1296000000(15天) |
您可以在ResourceManager、NodeManager、MapReduce的JobHistoryServer各节点的“yarn-site.xml”配置文件中进行如下配置,其中yarn.nodemanager.remote-app-log-dir和yarn.nodemanager.remote-app-log-archive-dir这两个参数还需要在YARN的客户端进行配置,且在ResourceManager、NodeManager和MapReduce HistoryServer各节点的配置与在YARN的客户端的配置必须一致。
参数 |
描述 |
默认值 |
---|---|---|
yarn.nodemanager.remote-app-log-dir |
设置Mapreduce任务日志在HDFS上的聚合路径。 |
/tmp/logs |
yarn.nodemanager.remote-app-log-archive-dir |
设置Mapreduce任务日志在HDFS上的归档路径。 |
/tmp/archived |
yarn.log-aggregation.archive.files.minimum |
设置Mapreduce任务日志归档最小文件数。当“yarn.nodemanager.remote-app-log-dir”文件夹下文件数大于等于该设置的值时归档任务启动。 |
5000 |
yarn.log-aggregation.archive-check-interval-seconds |
设置Mapreduce任务日志归档任务启动周期(秒)。只有日志文件数达到“yarn.log-aggregation.archive.files.minimum”设置值时日志文件才会被归档。周期设置为“0”或“-1”时归档功能禁用。 |
-1 |
yarn.log-aggregation.retain-seconds |
设置Mapreduce任务日志在HDFS上的保留时间。设置为“-1”时日志文件永久保存。 |
1296000 |
yarn.log-aggregation.retain-check-interval-seconds |
设置Mapreduce任务日志清理任务的检查周期(秒)。设置为“-1”时检查周期为日志保留时间的十分之一。 |
86400 |