flink作为一个分布式计算引擎,它可以在所有主流集群资源管理器中,如Hadoop YARN,Apache Mesos和Kubernetes,也可以运行在独立集群中。当然,它还提供了本地运行模式,可以供我们开发测试。
架构组成
flink集群中最重要的两个进程组件是:JobManager 和 TaskManager。
这是典型的主从架构:一个集群中只能有一个JobManager(HA部署的除外,它会有一个leader jobmager和一个standby jobmanager),但是可以有多个TaskManager。
JobManager
JobManager负责管理协调管理任务执行,主要功能如下:
- 调度任务执行
- 响应任务状态变化(任务完成,失败等)
- 协调checkpoints的生成(checkpoints的作用后续会讲)
- 失败恢复重启等等
JobManager中有三大组件:
- ResourceManager
ResourceManager负责资源供给和分配,它管理着task slots(flink中任务的执行单元,可以类比线程进行理解)。 - Dispatcher
Dispatcher提供了REST接口给客户端,用来提交任务至flink集群运行,同时也提供了webui方便用户查看job执行信息。 - JobMaster
JobMaster负责管理JobGraph(job执行图)的执行。多个job可以同时运行在一个flink集群上,每个job拥有自己的JobMaster。
TaskManager
TaskManager执行任务,并且缓存中间状态。 TaskManager至少要有一个,最小的资源调度执行单元叫做task slot。一个TaskManager中task slot的数量意味着这个TaskManager可并发执行任务的数量。
flink job提交运行流程解析

在一个job的提交执行过程中,会涉及到以下几个进程:
Client
Client即客户端进程用于准备jar包,提交任务执行流图到JobManager上。JobMangerTaskManager
过程如下:
Client解析程序代码,优化数据流生成JobGraph。Client将job提交至JobManager。JobManager收到job后生成执行流图,并申请TaskManager资源。JobManager将任务分配到指定的TaskManager上。TaskManager启动执行任务。JobManager接收来自TaskManager的心跳信息,并随时将job状态同步给Client(如果Client没关闭的情况下)。- 在任务执行过程中,
JobMangager定时通知TaskManager生成checkpoint。 Client可通过命令或者用户直接通过JobManager的webui控制job的取消,停止。
Flink是分布式计算引擎,有本地运行模式。其集群采用主从架构,重要进程组件为JobManager和TaskManager,JobManager负责管理协调,TaskManager执行任务。还介绍了Flink Job提交运行流程,涉及客户端等进程,包括解析代码、申请资源、分配任务等步骤。
——flink整体架构&spm=1001.2101.3001.5002&articleId=111398232&d=1&t=3&u=274372c3b6c340009aef82cd74aabd9b)
9048





