任务状态
实时任务的状态流转图如下:
主要分为三个阶段:
等待提交阶段
此时任务处于平台引擎的调度队列中,还未提交到Yarn的资源队列。
如果在提交过程中与集群的交互存在问题(如网络问题、集群服务问题等),可能会导致提交失败。
等待运行阶段
在成功提交后,任务进入资源队列,等待顺序执行。
- 当执行到本任务时,如果出现资源不足的情况,任务会立即进入超时队列。
在超时队列中的任务,会按照任务设置中的出错重试时间间隔(如果没有配置出错重试,系统固定每3秒),重新提交到资源队列。
在重新提交并顺序执行到本任务,仍然出现资源不足的情况下,任务继续返回超时队列。如此反复,如果本任务在超时队列中等待的总时长超过任务设置的超时时长,则任务状态改为「超时取消」,不再重复提交。
运行中阶段
运行中的任务如果出现异常情况,会经过一个短暂的「失败中」状态,最后变为「运行失败」。
可能导致出现的异常情况有很多,具体可以查看任务运行日志分析问题。
运行中的任务如果手动停止,会经过一个「停止中」状态,最后变为「取消」。
「停止中」状态可能会持续较长时间,具体原因可以查看【任务管理】。
运行中的任务变为「已完成」。
一般实时任务是不会存在「已完成」状态的,因为实时计算是个无界的计算。
但是当该任务的数据来源存在数据边界的情况时,当消费完这些数据后,任务会自动停止,避免无谓的资源消耗。比如对一个FlinkSQL进行调试时,调试的数据是有边界的,当完成调试后任务会自动变为「已完成」。