Skip to main content

任务状态

实时任务的状态流转图如下:

image-20220708102355886

主要分为三个阶段:

  1. 等待提交阶段

    此时任务处于平台引擎的调度队列中,还未提交到Yarn的资源队列。

    如果在提交过程中与集群的交互存在问题(如网络问题、集群服务问题等),可能会导致提交失败。

  2. 等待运行阶段

    在成功提交后,任务进入资源队列,等待顺序执行。

    • 当执行到本任务时,如果出现资源不足的情况,任务会立即进入超时队列。

    2021 02 26 11 45 23

    • 在超时队列中的任务,会按照任务设置中的出错重试时间间隔(如果没有配置出错重试,系统固定每3秒),重新提交到资源队列。

      image-20220708105216556

    • 在重新提交并顺序执行到本任务,仍然出现资源不足的情况下,任务继续返回超时队列。如此反复,如果本任务在超时队列中等待的总时长超过任务设置的超时时长,则任务状态改为「超时取消」,不再重复提交。

      2021 02 26 11 45 52

  1. 运行中阶段

    • 运行中的任务如果出现异常情况,会经过一个短暂的「失败中」状态,最后变为「运行失败」。

      可能导致出现的异常情况有很多,具体可以查看任务运行日志分析问题。

    • 运行中的任务如果手动停止,会经过一个「停止中」状态,最后变为「取消」。

      「停止中」状态可能会持续较长时间,具体原因可以查看【任务管理】。

    • 运行中的任务变为「已完成」。

      一般实时任务是不会存在「已完成」状态的,因为实时计算是个无界的计算。

      但是当该任务的数据来源存在数据边界的情况时,当消费完这些数据后,任务会自动停止,避免无谓的资源消耗。比如对一个FlinkSQL进行调试时,调试的数据是有边界的,当完成调试后任务会自动变为「已完成」。