
# 配置MapReduce任务日志归档和清理机制
#### 配置场景
执行一个MapReduce应用会产生两种类型日志文件：作业日志和任务日志。
- 作业日志由MRApplicationMaster产生，详细记录了作业启动时间、运行时间，每个任务启动时间、运行时间、Counter值等信息。此日志内容被HistoryServer解析以后用于查看作业执行的详细信息。
- 任务日志记录了每个运行在Container中的任务输出的日志信息。默认情况下，任务日志只会存放在各NodeManager的本地磁盘上。打开日志聚合功能后，NodeManager会在作业运行完成后将本地的任务日志进行合并，写入到HDFS中。
由于MapReduce的作业日志和任务日志（聚合功能开启的情况下）都保存在HDFS上。对于计算任务量大的集群，如果不进行合理的配置对日志文件进行定期归档和删除，日志文件将占用HDFS大量内存空间，增加集群负载。
日志归档是通过Hadoop Archives功能实现的，Hadoop Archives启动的并行归档任务数（Map数）与待归档的日志文件总大小有关。计算公式为：并行归档任务数=待归档的日志文件总大小/归档文件大小。
#### 配置描述
进入Mapreduce服务参数"全部配置"界面，具体操作请参考[修改集群服务配置参数](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_2125.html)章节。
在搜索框中输入参数名称，修改并保存配置。然后在Mapreduce服务"概览"页面选择"更多 \> 同步配置"。同步完成后重启Mapreduce服务。
- 作业日志参数：
  表1参数说明 
  | **参数**                                   | **描述**                                                             | **默认值**         |
  |:---|:---|:---|
  | mapreduce.jobhistory.cleaner.enable      | 是否开启作业日志文件清理功能。                                                    | true            |
  | mapreduce.jobhistory.cleaner.interval-ms | 作业日志文件清理启动周期。只有保留时间比"mapreduce.jobhistory.max-age-ms"更长的日志文件才会被清除。 | 86400000（1 天）   |
  | mapreduce.jobhistory.max-age-ms          | 比此项设置的毫秒数保留时间更长的作业日志文件将被清理。                                        | 1296000000（15天） |
     
  
- 任务日志参数：
  表2参数说明 
  | **参数**                                              | **描述**                                                                                                              | **默认值** |
  |:---|:---|:---|
  | 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   |
     
  ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
  如果是任务日志将HDFS存储空间占用太多，主要修改"mapreduce.jobhistory.max-age-ms"和"yarn.log-aggregation.retain-check-interval-seconds"配置项来控制任务日志保存时间。
  
 
