Flink整个系统包含三个部分:
1、Client:
给用户提供向Flink系统提交用户任务(流式作业)的能力。用户提交一个Flink程序时,会首先创建一个Client,该Client首先会对用户提交的Flink程序进行预处理,并提交到Flink集群。
Client会将用户提交的Flink程序组装成一个JobGraph,并且是以JobGraph的形式提交的。
2、TaskManager:
业务执行节点,执行具体用户任务。TaskManager可以有多个,各个TaskManager都平等。
实际负责执行计算的Worker,在其上执行Flink Job的一组Task。
负责管理其所在节点上的资源信息,如内存、磁盘、网络等,在启动的时候将资源状态向JobManager汇报。
3、JobManager:
管理节点,管理所有的TaskManager,并决策用户任务在哪些TaskManager上执行。
Master进程,Flink系统的协调者,它负责接收Flink Job及Job的管理和资源的协调,包括任务调度,检查点管理,失败恢复、调度组成Job的多个Task执行等。
对于集群为HA模式,可以同时多个master进程,其中一个作为leader,其他作为standby。当leader失败时,会选出一个standby的master作为新的leader(通过zookeeper实现leader选举)
1、Flink程序提交给JobClient
2、JobClient再提交给JobManager
3、JobManager负责资源的协调和Job的执行
4、待资源分配完成,task就会分配到不同的TaskManager,TaskManager会初始化线程去执行task
5、根据程序的执行状态向JobManager反馈,执行的状态包括starting、in progress、finished以及canceled和failling等等
6、当Job执行完成,结果会返回给客户端