淘先锋技术网

首页 1 2 3 4 5 6 7

​ 当创建一个Flink任务后,该任务可能会经历多种状态。目前Flink给任务共定义了9种状态,包括:CreatedRunningFinishedCancellingCanceledRestartingFailingFailedSuspended。下面这张图详细展示了一个Job可能会经历的所有状态。

在这里插入图片描述

  • 最简单的一种状态就是:作业启动时处于Created状态,任务启动后处于Running状态,当所有运行的task都进入了最终状态,任务会自动切换到Finished状态,这是一个正常job从启动到停止的正常流程,但再实际生产环境,可能也会出现其他一些情况。
  • 如果任务在启动后,因为网络原因或者其他原因导致job失败,那么任务首先会切换到Failing状态,这样做的目的主要是为了取消所有正在运行的tasks。当然,如果配置了失败重试次数,任务会自动尝试重启,如果重启成功,那么任务会从Restarting状态变更为Created继而再处于Running状态,如果重启失败且已无法恢复,那么任务会等所有tasks都进入到最终状态后变更为Failed状态。
  • 如果用户想取消一个刚创建的任务,那么任务会从Created状态变更为Cancelling状态,也可能从Running状态变更为Cancelling状态,处于Cancelling状态的任务,会取消掉所有正在运行的tasks,等所欲tasks都结束后,任务会进入Canceled状态。

​ Flink任务除了这几种任务状态外,还有Suspended这种特殊的状态。当任务状态为FinishedCanceledFailed 这3种状态时,任务会彻底结束,从资源管理器中终结,同时会自动清理掉任务的一些缓存数据。但Suspended是一个局部的终结状态,简单来讲就是任务只是被当前的jobManager终结了,但集群中的其他jobManager可以通过高可用的方式,获取到任务的信息并重启任务。因此一个处于Suspended 状态的作业不会被彻底清理掉。

​ 根据任务的不同状态,我们可以通过一些监控策略对任务的状态提前监控和预警,降低生产任务Down风险。