Flink架构与执行流程

Flink核心架构如下图所示
在这里插入图片描述

和Spark类似,Flink也是采用了Master-slave的主从架构模型,主要包含三个模块,Client,Jobmanager,TaskManager。下面我将依依介绍各个模块的功能。

1.Client

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

这是官网的原话,说的直白点就是,flink 客户端主要负责flink job的提交工作。

2.JobManager

jobmanager在flink中扮演master角色,类似于spark中的Master,主要负责资源分配和任务调度,以及协调checkpoint(coordinator),以及协调中失败中恢复。具体JobManager又包含三个组件。

2.1 Dispatcher

Dispatcher 提供了一个 REST 接口,用来提交 Flink 应用程序执行,并为每个提交的作业启动一个新的 JobMaster。它还运行 Flink WebUI 用来提供作业执行信息。

2.2 JobMaster

JobMaster 负责管理单个JobGraph的执行。Flink 集群中可以同时运行多个作业,每个作业都有自己的 JobMaster。

2.3 ResourceManager

ResourceManager 负责 Flink 集群中的资源提供、回收、分配 - 它管理 task slot。Flink 为不同的环境和资源提供者(例如 YARN、Mesos、Kubernetes 和 standalone 部署)实现了对应的 ResourceManager。在 standalone 设置中,ResourceManager 只能分配可用 TaskManager 的 slots,而不能自行启动新的 TaskManager。

3.TaskManager

TaskManager是Flink中实际参与运算的节点,Flink中至少有一个TaskManager,TaskManager中资源调度的最小单位为task slot,task slot的数量表示并发处理task的能力。

4.Flink执行流程

1.Flink 客户端向集群提交一个flink application。

2.cluster manager 找到一台节点启动jobmanager。

3.flink 客户端向jobmanager的dispatcher提交一个job。

4.dispatcher为这个flink job启动一个jobmaster。

5.jobmaster向resourcemanager申请task运行所需的资源。

6.resourcemanager本身没有资源,所以找到cluster manager,让他帮忙寻找资源。

7.cluster manager启动一个节点作为集群的taskmanager。(taskmanager中有task slot资源)

8.resourcemanager向taskmanager申请task slot资源。

9.taskmanager向jobmaster提供task slot资源。

10.jobmanager将task提交到taskmanager 中执行。

slot资源。

10.jobmanager将task提交到taskmanager 中执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值