官网:
https://nightlies.apache.org/flink/flink-docs-release-1.14/zh/docs/concepts/flink-architecture/
client
用户提交编写好的 Flink 任务时( jar 包),先创建一个 client ,用来准备和提交数据流到 JobManagers。之后,可以断开连接或者保持连接以获取任务的状态信息
JobManager
集群 管理者,也就是 masters ,至少需要一个 JobManager
高可用 的系统会有 多个,一个 leader,其他是 standby
负责以下工作:
- 调度任务
- 协调
checkpoints - 协调故障恢复
- 收集
Job状态信息 - 并管理Flink集群中的
TaskManager
TaskManager
也就是workers,至少需要一个TaskManager
- 负责执行计算
- 是节点管理员,把该节点上的服务器信息(如:内存、磁盘、任务运行情况等)向
JobManager汇报
图
执行流程
- Flink 客户端 将代码逻辑构建成一个
DataflowDataflow由operator组成,operator分为:Source、Transformation、Sink
- 在通过
Graph Builder构建DAG的Dataflow graph, 构建 job,划分出task和subtask等等。 Client将job提交到JobManager.Client通过Actor System和JobManager进行消息通讯,接收JobManager返回的状态更新和任务执行统计结果。JobMangaer按照Dataflow的Task和Subtask的划分,将任务调度分配到各个TaskManager中进行执行。TaskManager会将内存抽象成多个TaskSlot(相当于线程) ,用于执行Task任务。
JobManagers 与 TaskManagers 之间的任务管理,Checkpoints 的触发,任务状态,心跳等等消息处理都是通过 ActorSystem 。
