Flink 运行架构
通过技术架构来了解的 Flink 是静态的,而实际上 Flink 集群在运行的时候,存在不同的进程角色来完成集群的管理,作业的提交、执行、管理等一系列的动作。
Flink 集群采用 Master-Slave 架构,Master 的角色是 JobManager,负责集群和作业管理,Slave 的角色是 TaskManager,负责执行计算任务。除此之外,Flink 还提供了客户端来管理集群和提交任务,其中 JobManager 和 TaskManager 是集群的进程,Flink 客户端是在集群外部执行的进程,不是集群的一部分。
1、Flink 客户端
Flink 客户端是 Flink 提供的 CLI 命令行工具,用来提交 Flink 作业到 Flink 集群,在客户端中负责 Stream Graph(流图)和 Job Graph(作业图)的构建,后面有详细介绍。使用 Table API 和 SQL 编写的 Flink 应用,还会在客户端中负责 SQL 解析和优化。
Flink 的 Flip 改进建议中提出了新的模式,SQL 解析、优化,StreamGraph、JobGraph、ExecutionGraph 构建转换等全部都会在 JobManager 中完成,这将在 Flink1.10 后续版本中实现。
2、 JobManager
JobManager 根据并行度将 Flink 客户端提交的 Flink 应用分解为子任务,从资源管理器申请所需的计算资源,资源具备之后,开始分发任务到 TaskManager 执行 Task,并负责应用容错,跟踪作业的执行状态,发现异常则恢复作业等。
3、TaskManager
TaskManager 接收 JobManager 分发的子任务,根据自身的资源情况,管理子任务的启动、停止、销毁、异常恢复等生命周期阶段。作业启动后开始从数据源消费数据、处理数据,并写入外部存储中。无论使用哪种资源集群,以上所介绍的角色是必不可少的,其作用一样。JobManager 是一个单点的部署模式,在 Flink 中支持 JobManager 的 HA 部署,在后续章节中会介绍 Flink HA 的部署。
版权声明: 本文为 InfoQ 作者【阿泽🧸】的原创文章。
原文链接:【http://xie.infoq.cn/article/476ba4a2bf512cd763e6957e0】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论