
# 配置Yarn实例重启后自动加载Container信息
#### 操作场景
YARN Restart特性包含两部分内容：ResourceManager Restart和NodeManager Restart。
- 当启用ResourceManager Restart时，备ResourceManager升主后，ResourceManager就可以通过加载之前的主ResourceManager的状态信息，并通过接收所有NodeManager上Container的状态信息，重构运行状态继续执行。这样应用程序通过定期执行检查点操作保存当前状态信息，避免工作内容的丢失。
- 当启用NodeManager Restart时，NodeManager在本地保存当前节点上运行的Container信息，重启NodeManager服务后通过恢复此前保存的状态信息，会避免丢失在此节点上运行的Container进度。
 
#### 配置ResourceManager Restart特性
1. 登录FusionInsight Manager。 
   登录集群Manager具体操作，请参考[访问MRS集群Manager](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0128.html)。
   
   
2. 选择"集群 \> 服务 \> Yarn \> 配置 \> 全部配置"。
3. 搜索并根据实际需要修改相关参数。 
   表1ResourceManager Restart参数配置 
   | **参数**                                                | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | **默认值**                                                                    |
   |:---|:---|:---|
   | yarn.resourcemanager.recovery.enabled                 | 是否开启ResourceManager在启动后恢复状态。 - true：开启。ResourceManager会启用恢复机制，能够在发生故障后恢复其状态。开启后需要设置"yarn.resourcemanager.store.class"参数。  - false：关闭。ResourceManager不会自动保存其状态，故障后需要重新初始化。                                                                                                                                                                                                                                                                                                                                   | true                                                                       |
   | yarn.resourcemanager.store.class                      | 指定用于保存应用程序和任务状态以及证书内容的state-store类。 取值范围： - org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore：基于ZooKeeper的state-store实现。  - org.apache.hadoop.yarn.server.resourcemanager.recovery.AsyncZKRMStateStore：基于ZooKeeper的异步启动应用程序的state-store实现。  - org.apache.hadoop.yarn.server.resourcemanager.recovery.FileSystemRMStateStore：类似HDFS的基于Hadoop文件系统的state-store实现。   | org.apache.hadoop.yarn.server.resourcemanager.recovery.AsyncZKRMStateStore |
   | yarn.resourcemanager.zk-state-store.parent-path       | 存储ResourceManager状态的ZooKeeper znode全路径。 如果"yarn.resourcemanager.store.class"设置为"org.apache.hadoop.yarn.server.resourcemanager.recovery.FileSystemRMStateStore"，则必须设置当前参数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | /rmstore                                                                   |
   | yarn.resourcemanager.work-preserving-recovery.enabled | 是否启用ResourceManager任务保持恢复功能。该配置仅用于Yarn特性验证。 - true：开启。ResourceManager在发生故障后能够保留之前的工作状态。  - false：关闭。ResourceManager不会启用任务保持恢复机制，故障恢复时需要重新初始化资源和任务。                                                                                                                                                                                                                                                                                                                                     | true                                                                       |
   | yarn.resourcemanager.state-store.async.load           | 对已完成的application是否启用ResourceManager异步恢复方式。 - true：开启。ResourceManager在启动时会以异步的方式从状态存储中加载之前保存的状态信息。  - false：关闭。ResourceManager在启动时会以同步的方式加载状态信息，可能会增加启动时间。                                                                                                                                                                                                                                                                                                                           | true                                                                       |
   | yarn.resourcemanager.zk-state-store.num-fetch-threads | 在开启异步模式加载任务后，加载任务线程的数量。 启用异步恢复功能，增加工作线程的数量可以加快恢复ZooKeeper中保存的任务信息的速度。取值范围大于0。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | 20                                                                         |
      
   
   
4. 保存修改的配置。保存完成后请重新启动配置过期的实例以使配置生效。 
   重启过程中，实例短暂不可用，建议在业务低峰期操作。
   
   
 
#### 配置NodeManager Restart特性
1. 登录FusionInsight Manager。 
   登录集群Manager具体操作，请参考[访问MRS集群Manager](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0128.html)。
   
   
2. 选择"集群 \> 服务 \> Yarn \> 配置 \> 全部配置"。
3. 搜索并根据实际需要修改相关参数。 
   表2NodeManager Restart参数配置 
   | **参数**                               | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                       | **默认值**                          |
   |:---|:---|:---|
   | yarn.nodemanager.recovery.enabled    | 当NodeManager重启时是否启用日志失败收集功能，是否恢复未完成的Application。 - true：开启。NodeManager会在节点故障后恢复之前运行的任务或容器。  - false：关闭。NodeManager不会自动保存其状态，故障后需要重新初始化。                                                                                                                              | true                             |
   | yarn.nodemanager.recovery.dir        | NodeManager用于保存Container状态的本地目录。 - 当NodeManager启用恢复功能时，会将任务的状态信息保存到该目录中，以便在节点故障后能够恢复任务。  - 该参数在"yarn.nodemanager.recovery.enabled"配置为"true"时有效。   注意： 请谨慎修改该项。如果配置不当，将造成服务不可用。当角色级别的该配置项修改后，所有实例级别的该配置项都将被修改。如果实例级别的配置项修改后，其他实例的该配置项的值保持不变。 | ${SRV_HOME}/tmp/yarn-nm-recovery |
   | yarn.nodemanager.recovery.supervised | NodeManager是否在监督模式下运行。 - true：开启。开启此特性后NodeManager在退出后不会清理Containers，NodeManager会尝试重启和恢复Containers。  - false：关闭。NodeManager在退出后不会尝试重启和恢复Containers。                                                                                                                         | true                             |
      
   
   
4. 保存修改的配置。保存完成后请重新启动配置过期的实例以使配置生效。 
   重启过程中，实例短暂不可用，建议在业务低峰期操作。
   
   
 
