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