
# Flink故障重启时支持剔除异常的TaskManager
#### 使用场景
当TaskManager所在节点磁盘故障导致Flink作业失败时，即使作业触发重启机制也无法恢复作业，最终可能导致作业失败或进入无限重启状态。
Flink支持发生故障时重启Flink作业，当TaskManager发生故障时能自动触发作业重启，避免影响业务。在作业重启过程中，系统会将失败的TaskManager放至空闲资源池，并优先复用空闲的TaskManager。
开启该特性后，Flink作业故障重启时将自动申请新的TaskManager资源，从而实现故障恢复。同时建议减少TaskManager空闲释放时间，例如参考[集群连接模式创建Flink SQL作业](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_24024.html)在Flink作业开发界面的"自定义参数"配置以下参数：
- **配置TaskManager空闲超时时间"resourcemanager.taskmanager-timeout"的参数值为"60s"。**
- **配置Checkpoint失败容忍次数"execution.checkpointing.tolerable-failed-checkpoints"的参数值为"5"。**
 
#### 约束与限制
- 本章节仅适用于MRS 3.6.0-LTS及之后版本。
- 该特性必须配合Flink作业重启策略使用，具体操作可参考[配置Flink作业重启策略](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_300629.html)。
- 当Flink作业的TaskManager同时发生大规模故障时，短时间内将有大量资源申请。由于失败的TaskManager不会立即释放占用的资源（需等待空闲超时时间后才释放），从而造成集群资源利用率下降。
- 仅在磁盘故障场景下支持剔除异常的TaskManager。
- 不支持批作业场景。
 
#### 前提条件
参考[创建FlinkServer权限角色](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_24049.html)创建一个具有FlinkServer管理员权限的用户用于访问Flink WebUI，如：flink_admin。
#### 配置步骤
1. 根据使用场景参考[配置Flink作业重启策略](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_300629.html)配置合适的Flink作业重启策略。
2. 使用具有FlinkServer管理员权限的用户，登录Manager界面，选择"集群 \> 服务 \> Flink"，在"Flink WebUI"右侧，单击链接，访问Flink的WebUI。
3. 单击"作业管理"进入作业管理页面。
4. 在FlinkServer作业管理界面，可参考[集群连接模式创建Flink SQL作业](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_24024.html)选择已有作业或新建作业，进入作业开发界面。
5. 在作业开发界面的"自定义参数"配置"resourcemanager.block-tm-on-failure.enabled"的参数值为"true"开启剔除异常TaskManager功能。参数配置完成后，提交Flink作业即可生效。 
   图1自定义参数配置   
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000002358924306.png "点击放大")
   
   
   
6. Flink作业提交运行后，模拟TaskManager磁盘故障场景，观察作业是否能够自动申请到新的TaskManager并恢复运行，而非进入无限重启状态。
 
