
# 配置Container日志聚合功能
#### 操作场景
Yarn提供了Container日志聚合功能，可以将各节点Container产生的日志收集到HDFS，释放本地磁盘空间。日志收集的方式有两种：
- 应用完成后将Container日志一次性收集到HDFS。
- 应用运行过程中周期性收集Container输出的日志片段到HDFS。
 
#### 配置Container日志聚合
1. 登录FusionInsight Manager。 
   登录集群Manager具体操作，请参考[访问MRS集群Manager](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0128.html)。
   
   
2. 选择"集群 \> 服务 \> Yarn \> 配置 \> 全部配置"。
3. 搜索以下参数名称，并根据需要修改参数值。 
   表1参数说明 
   | **参数**                                                                                 | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | **默认值**   |
   |:---|:---|:---|
   | yarn.log-aggregation-enable                                                            | 设置是否打开Container日志聚合功能。 - 设置为"true"，表示打开该功能，日志会被收集到HDFS目录中。如果需要在WebUI界面上查看之前产生的日志，建议将此参数设置为"true"。  - 设置为"false"，表示关闭该功能，表示日志不会收集到HDFS中。在修改值为"false"并生效后，生效前的日志无法在WebUI中获取。   修改参数值后，需重启YARN服务使其生效。                                                                                                                                                                                                                                                                                                                           | true      |
   | yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds                      | NodeManager周期性日志收集的时间间隔。 - 设置为-1或0时，表示关闭周期性收集日志功能，日志在应用运行完成后一次性收集。  - 收集周期最小可设定为3600秒。当设置为大于0秒且小于3600秒时，收集周期将使用3600秒。   取值范围大于等于-1。                                                                                                                                                                                                                                                                                                                                                                                          | -1        |
   | yarn.nodemanager.disk-health-checker.log-dirs.max-disk-utilization-per-disk-percentage | 配置Container日志目录可以占用每块磁盘上YARN的磁盘配额的最大百分比。取值范围为-1～100。 只有启用了周期性收集日志功能的应用才会在日志目录磁盘配额超过设定阈值时被触发启动日志收集。 - 当Container日志目录占用空间超过此设定值时，将触发周期性日志收集服务启动一次周期外的日志收集活动，以释放本地磁盘空间。  - 如果配置值小于-1或大于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日志的文件夹名称。 Container日志的完整存放目录为："{yarn.nodemanager.remote-app-log-dir}/${user}/{yarn.nodemanager.remote-app-log-dir-suffix}"。 其中"yarn.nodemanager.remote-app-log-dir"为其参数取值；*{user}*为运行任务时的用户名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | logs      |
   | yarn.nodemanager.log-aggregator.on-fail.remain-log-in-sec                              | 设置Container日志归集失败后日志在本地保留的时间。单位：秒。 - 设置为0时，本地日志将马上删除。  - 设置为正数时，表示本地日志将保留这段时间。                                                                                                                                                                                                                                                                                                                                                                                                                                               | 604800    |
   | yarn.nodemanager.log-aggregation.queue-user.enable                                     | 日志聚合路径是否包含Queue User。主要针对Hive作业，Queue User为Hive提交作业的真实用户。默认不开启。（该参数只在MRS 3.3.1以及之后版本支持。） - 参数取值如下： - true：表示日志聚合路径包含Queue User。  - false：表示日志聚合路径不包含Queue User。    - 可以通过自定义参数开启当前特性，在Manager选择"集群 \> 服务 \> Yarn \> 全部配置 \> NodeManager（角色） \> 自定义"，在"nodemanager.yarn-site.customized.configs"中增加该参数并设置值为"true"。                                                                                                                                                                       | false     |
   | yarn.nodemanager.remote-app-log-dir                                                    | Yarn作业日志聚合路径。（该参数只在MRS 3.3.1以及之后版本支持。） - 如果需要归集到多个NameService，参考格式如下： hdfs://hacluster,ns1/tmp/logs   - 给用户指定日志归集的NameService，参考格式如下（默认聚合路径必须在最前面）： hdfs://hacluster/tmp/logs;*\[username\]*hdfs://logcluster/tmp/logs   - 给用户和Queue User指定日志归集的NameService，参考格式如下（默认聚合路径必须在最前面）： hdfs://hacluster/tmp/logs;*\[username:queue user\]*hdfs://hacluster/tmp/logs                                                                | /tmp/logs |
      
   
   
4. 修改并保存配置。然后在Yarn服务"概览"页面选择"更多 \> 同步配置"。同步完成后重启Yarn服务。
 
#### 配置Container日志保存时间
1. 登录FusionInsight Manager。
2. 选择"集群 \> 服务 \> Mapreduce \> 配置 \> 全部配置"。
3. 搜索以下参数名称，并根据需要修改参数值。 
   表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"该配置时间的十分之一。 当"yarn.log-aggregation.retain-seconds"值为0时，该值不能设置为0或-1。   - 设置为正数时，将周期性的间隔这段时间以后对HDFS上的Container聚合日志进行扫描。  - 当时间设置太短时，有可能会增加NameNode的负担，建议根据实际情况设置一个合理的时间。   | 86400   |
      
   
   
4. 保存修改的配置。保存完成后请重新启动配置过期的服务或实例以使配置生效。
 
#### 配置MapReduce应用日志文件滚动输出
周期性收集日志功能目前仅支持MapReduce应用，且MapReduce应用必须进行相应的日志文件滚动输出配置，需要在MapReduce客户端节点的*"客户端安装路径* /Yarn/config/mapred-site.xml"配置文件中进行如[表3]所示的配置。
1. 登录FusionInsight Manager。 
   登录集群Manager具体操作，请参考[访问MRS集群Manager](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0128.html)。
   
   
2. 选择"集群 \> 服务 \> Yarn \> 配置 \> 全部配置"。
3. 搜索以下参数名称，并根据需要修改参数值。 
    表3MapReduce应用日志文件滚动输出配置 
   | **参数**                                        | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | **默认值** |
   |:---|:---|:---|
   | mapreduce.task.userlog.limit.kb               | MR应用程序单个task日志文件大小限制。单位KB。 - 取值范围：大于等于0。  - 当日志文件达到该限制时，会新建一个日志文件进行输出。  - 设置为"0"表示不限制日志文件大小。                                                                                                                                                                                                                                                                           | 51200   |
   | yarn.app.mapreduce.task.container.log.backups | MR应用程序task日志保留的最大个数。 使用CRLA（ContainerRollingLogAppender）时任务日志备份文件的数量。 - 默认使用CLA（ContainerLogAppender）且Container日志不回滚。  - 当mapreduce.task.userlog.limit.kb和yarn.app.mapreduce.task.container.log.backups都大于0时，任务启用CRLA。  - 设置为"0"表示不滚动输出。  - 取值范围0\~999。   | 10      |
   | yarn.app.mapreduce.am.container.log.limit.kb  | MR应用程序单个AM日志文件大小限制。单位：KB。 - 当日志文件达到该限制时，会新建一个日志文件进行输出。  - 取值范围：大于等于0。  - 设置为"0"表示不限制单个AM日志文件大小。                                                                                                                                                                                                                                                                           | 51200   |
   | yarn.app.mapreduce.am.container.log.backups   | 使用CRLA（ContainerRollingLogAppender）时ApplicationMaster日志备份文件的数量。 - 当yarn.app.mapreduce.am.container.log.limit.kb和yarn.app.mapreduce.am.container.log.backups都大于0时，ApplicationMaster启用CRLA。  - 默认使用CLA（ContainerLogAppender）且容器日志不回滚。  - 取值范围0\~999。  - 设置为"0"表示不滚动输出。                               | 20      |
   | yarn.app.mapreduce.shuffle.log.backups        | MR应用程序shuffle日志保留的最大个数。 - 当yarn.app.mapreduce.shuffle.log.limit.kb和yarn.app.mapreduce.shuffle.log.backups都大于0时，syslog.shuffle将采用CRLA。  - 取值范围0\~999。  - 设置为"0"表示不滚动输出。                                                                                                                                                                                           | 10      |
   | yarn.app.mapreduce.shuffle.log.limit.kb       | MR应用程序单个shuffle日志文件大小限制，单位KB。 - 当日志文件达到该限制时，会新建一个日志文件进行输出。  - 取值范围大于等于0。  - 设置为"0"不限制单个shuffle日志文件大小。                                                                                                                                                                                                                                                                      | 51200   |
      
   
   
4. 单击"保存"，保存配置。 
   保存完成后请重新启动配置过期的Yarn服务以使配置生效。
   
   
 
