Flink 之 JobManager | 青训营笔记

192 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第5天。

概述

Flink是由Apache开发的开源分布式流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。Flink可以执行批处理和流处理程序,Flink 将批处理(即处理有限的静态数据)视作一种特殊的流处理。 Flink 整个系统主要由两个组件组成,分别为 JobManagerTaskManager,Flink 架构也遵循 Master - Slave 架构设计原则,JobManager 为 Master 节点,TaskManager 为 Worker (Slave)节点。

ec3c021fe85fd4d9b0eb93f90569994.png

Flink集群分析

Flink 运行时由两种类型的进程组成:至少一个 JobManager 和一个或者多个 TaskManager。 在高可用(HA)模式中,可能有多个 JobManager,其中一个始终是 leader,其他的则是 standby。 Flink集群启动方式:

  • 直接在机器上作为standalone 集群启动
  • 在容器中启动
  • 通过YARN或Kubernetes等资源框架管理并启动

5ed538cb29c944468e0fb11a3058ec3.png Client不是运行时和程序执行的一部分,而是用于准备数据流并将其发送给 JobManager。之后,客户端可以断开连接(分离模式),或保持连接来接收进程报告(附加模式)。客户端可以作为触发执行 Java/Scala 程序的一部分运行,也可以在命令行进程./bin/flink run ...中运行。

JobManager

协调 Flink 应用程序的分布式执行。它决定何时调度下一个 task(或一组 task)、对完成的 task 或执行失败做出反应、协调 checkpoint、并且协调从失败中恢复等等。

f9100c1596597e617a190afdf002faa.png 这个进程由三个不同的组件组成:

  1. ResourceManager: 负责 Flink 集群中的资源提供、回收、分配 。 它管理 task slots,这是 Flink 集群中资源调度的单位。Flink 为不同的环境和资源提供者(例 YARN、Kubernetes 和 standalone 部署)实现了对应的 ResourceManager。
  2. Dispatcher:提供了一个 REST 接口,用来提交 Flink 应用程序执行,并为每个提交的作业启动一个新的 JobMaster。它还运行 Flink WebUI 用来提供作业执行信息。
  3. JobMaster:负责管理单个JobGraph的执行。Flink 集群中可以同时运行多个作业,每个作业都有自己的 JobMaster。

总结

乘风破浪,卓越不凡