
# 配置Container日志聚合功能
#### 配置场景
Yarn提供了Container日志聚合功能，可以将各节点Container产生的日志收集到HDFS，释放本地磁盘空间。日志收集的方式有两种：
- 应用完成后将Container日志一次性收集到HDFS。
- 应用运行过程中周期性收集Container输出的日志片段到HDFS。
 
#### 配置描述
**参数入口：**
参考[修改集群服务配置参数](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_2125.html)进入Yarn服务参数"全部配置"界面，在搜索框中输入[表1]中参数名称，修改并保存配置。然后在Yarn服务"概览"页面选择"更多 \> 同步配置"。同步完成后重启Yarn服务。
其中"yarn.nodemanager.remote-app-log-dir-suffix"参数还需要在Yarn的客户端进行配置，且在ResourceManager、NodeManager和JobHistory节点的配置与在Yarn的客户端的配置必须一致。
周期性收集日志功能目前仅支持MapReduce应用，且MapReduce应用必须进行相应的日志文件滚动输出配置，需要在MapReduce客户端节点的*"客户端安装路径* /Yarn/config/mapred-site.xml"配置文件中进行如[表3]所示的配置。
 表1参数说明 
| **参数**                                                                                 | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | **默认值** |
|:---|:---|:---|
| yarn.log-aggregation-enable                                                            | 设置是否打开Container日志聚合功能。 - 设置为"true"，表示打开该功能，日志会被收集到HDFS目录中。  - 设置为"false"，表示关闭该功能，表示日志不会收集到HDFS中。   修改参数值后，需重启Yarn服务使其生效。 说明： - 在修改值为"false"并生效后，生效前的日志无法在WebUI中获取。  - 如果需要在WebUI界面上查看之前产生的日志，建议将此参数设置为"true"。                                                                                                                                                                                                                                                                                               | true    |
| yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds                      | NodeManager周期性日志收集的时间间隔。 - 设置为-1或0时，表示周期性收集日志功能关闭，日志在应用运行完成后一次性收集。  - 收集周期最小可设定为3600秒。当设置为大于0秒且小于3600秒时，收集周期将使用3600秒。   定义NodeManager唤醒并上传日志的间隔周期。设置为-1或0表示禁用滚动监控，应用任务结束后日志汇聚。取值范围大于等于-1。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | -1      |
| yarn.nodemanager.disk-health-checker.log-dirs.max-disk-utilization-per-disk-percentage | 配置Container日志目录可以占用每块磁盘上Yarn的磁盘配额的最大百分比。当日志目录占用空间超过此设定值时，将触发周期性日志收集服务启动一次周期外的日志收集活动，以释放本地磁盘空间。每个磁盘上可提供给Container logs的最大可使用率。当Container logs使用超过这个限制，会触发滚动汇聚。 - 对于MRS 3.x之前的版本集群，磁盘配额最大百分比的有效取值范围为0～100，如果配置小于等于0，会被强制重置为25；如果配置大于100，则被强制重置为25。  - 对于MRS 3.x及后续版本集群，磁盘配额最大百分比的有效取值范围为-1～100，如果配置小于-1，会被强制重置为25；如果配置大于100，则被强制重置为25。而配置为-1时则关闭Container日志目录的磁盘容量检测功能。   说明： - Container日志目录实际可用磁盘百分比=YARN磁盘可用百分比（"yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage"） \* 日志目录可用百分比（"yarn.nodemanager.disk-health-checker.log-dirs.max-disk-utilization-per-disk-percentage"）。  - 只有启用了周期性收集日志功能的应用才会在日志目录磁盘配额超过设定阈值时被触发启动日志收集。   | 25      |
| yarn.nodemanager.remote-app-log-dir-suffix                                             | 设置HDFS用于存放Container日志的文件夹名称。该配置加上"yarn.nodemanager.remote-app-log-dir"，构成了Container日志的完整存放目录。目录为："{yarn.nodemanager.remote-app-log-dir}/${user}/{yarn.nodemanager.remote-app-log-dir-suffix}"。 说明： *{user}*为运行任务时的用户名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | logs    |
| yarn.nodemanager.log-aggregator.on-fail.remain-log-in-sec                              | 设置Container日志归集失败后日志在本地保留的时间。单位：秒。 - 设置为0时，本地日志将马上删除。  - 设置为正数时，表示本地日志将保留这段时间。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | 604800  |
   
参考[修改集群服务配置参数](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_2125.html)进入Mapreduce服务参数"全部配置"界面，在搜索框中输入[表2]中参数名称。
 表2参数说明 
| **参数**                                             | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | **默认值** |
|:---|:---|:---|
| yarn.log-aggregation.retain-seconds                | 汇聚日志的保存时间。单位：秒。 - 设置为-1时，表示HDFS上面的Container聚合日志将永久保留。    - 设置为0或正数时，表示HDFS上面的Container聚合日志将保留这段时间，超时将被删除。 说明： 当时间设置太短时，有可能会增加NameNode的负担，建议根据实际情况设置一个合理的时间值。                                                                                                            | 1296000 |
| yarn.log-aggregation.retain-check-interval-seconds | 设置扫描HDFS保存的Container聚合日志的间隔时间。单位：秒。 - 设置为-1或0时，间隔时间将为"yarn.log-aggregation.retain-seconds"该配置时间的十分之一。 说明： 当该配置设置为-1或0时，"yarn.log-aggregation.retain-seconds"不能设置为0。   - 设置为正数时，将周期性的间隔这段时间以后对HDFS上的container聚合日志进行扫描。 说明： 当时间设置太短时，有可能会增加NameNode的负担，建议根据实际情况设置一个合理的时间。    | 86400   |
   
参考[修改集群服务配置参数](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_2125.html)进入Yarn服务参数"全部配置"界面，在搜索框中输入[表3]中参数名称。
 表3MapReduce应用日志文件滚动输出配置 
| **参数**                                        | **描述**                                                                                                                                                                                                                                                                                                                                                                     | **默认值** |
|:---|:---|:---|
| mapreduce.task.userlog.limit.kb               | MR应用程序单个task日志文件大小限制。当日志文件达到该限制时，会新建一个日志文件进行输出。设置为"0"表示不限制日志文件大小。                                                                                                                                                                                                                                                                                                          | 51200   |
| yarn.app.mapreduce.task.container.log.backups | MR应用程序task日志保留的最大个数。 设置为"0"表示不滚动输出。 使用CRLA（ContainerRollingLogAppender）时任务日志备份文件的数量。默认使用CLA（ContainerLogAppender）且container日志不回滚。 当mapreduce.task.userlog.limit.kb和yarn.app.mapreduce.task.container.log.backups都大于0时，任务启用CRLA。取值范围0\~999。 | 10      |
| yarn.app.mapreduce.am.container.log.limit.kb  | MR应用程序单个AM日志文件大小限制。单位：KB，当日志文件达到该限制时，会新建一个日志文件进行输出。设置为"0"表示不限制单个AM日志文件大小。                                                                                                                                                                                                                                                                                                  | 51200   |
| yarn.app.mapreduce.am.container.log.backups   | MR应用程序AM日志保留的最大个数。设置为"0"表示不滚动输出。使用CRLA（ContainerRollingLogAppender）时ApplicationMaster日志备份文件的数量。默认使用CLA（ContainerLogAppender）且容器日志不回滚。 当yarn.app.mapreduce.am.container.log.limit.kb和yarn.app.mapreduce.am.container.log.backups都大于0时，ApplicationMaster启用CRLA。取值范围0\~999。                                                                    | 20      |
| yarn.app.mapreduce.shuffle.log.backups        | MR应用程序shuffle日志保留的最大个数。设置为"0"表示不滚动输出。 当yarn.app.mapreduce.shuffle.log.limit.kb和yarn.app.mapreduce.shuffle.log.backups都大于0时，syslog.shuffle将采用CRLA。取值范围0\~999。                                                                                                                                                              | 10      |
| yarn.app.mapreduce.shuffle.log.limit.kb       | MR应用程序单个shuffle日志文件大小限制，单位KB。当日志文件达到该限制时，会新建一个日志文件进行输出。设置为"0"不限制单个shuffle日志文件大小。取值范围大于等于0。                                                                                                                                                                                                                                                                                 | 51200   |
   
