Flink架构与基本原理

举报
FI小粉丝 发表于 2021/08/28 16:04:12 2021/08/28
【摘要】 1.Flink架构(图-1 Flink Runtime 来自:https://ci.apache.org/projects/flink/flink-docs-release-1.6/concepts/runtime.html)2.基本原理2.1 JobmanagerJobManager(下称为JM)负责整个Flink集群任务的调度以及资源的管理,从客户端中获取提交的应用,然后根据集群中的ta...

1.Flink架构

(图-1 Flink Runtime 来自:https://ci.apache.org/projects/flink/flink-docs-release-1.6/concepts/runtime.html

2.基本原理

2.1 Jobmanager

JobManager(下称为JM)负责整个Flink集群任务的调度以及资源的管理,从客户端中获取提交的应用,然后根据集群中的taskmanagerslot的使用情况,为提交的应用分配响应slot资源。JM是整个集群的master节点,其可以理解为一个MR任务的ApplicationMaster,负责整个集群的资源管理和任务调度。JMtaskmanager之间通信通过actor system进行通信(akka框架),JM定期能够获取任务的运行情况发给客户端。同时JM也会触发checkpoint的操作,JM会根据checkpoint的定时时间,向taskmanager下发checkpoint的指令。

2.2 Taskmanager   

Taskmanager(下称为TM)相当于整个集群的slave节点,负责具体的任务执行和对应任务在每个节点上的资源申请与管理。客户端通过将编号的FLink应用的编译打包提交给JM,然后JM会根据已经注册在JM中的TM的资源申请情况,将任务分配给有资源的TM节点,然后启动并运行任务。TMJM接收到需要部署的任务后,使用slot资源启动task,建立数据接入的网络连接,接收数据并开始数据处理。及同时TM之间的数据交互都是通过数据流的方式进行的。

Flink 中的工作进程。通常在Flink 中会有多个TaskManager 运行,每一个TaskManager都包含了一定数量的插槽(slots)。插槽的数量限制了TaskManager 能够执行的任务数量。启动之后,TaskManager 会向资源管理器注册它的插槽;收到资源管理器的指令后,TaskManager 就会将一个或者多个插槽提供给JobManager 调用。JobManager 就可以向插槽分配任务(tasks)来执行了。在执行过程中,一个TaskManager 可以跟其它运行同一应用程序的TaskManager 交换数据。Slot才是任务执行具体的执行单元。

3.任务提交流程

如果我们将Flink 集群部署到YARN 上,那么就会有如下的提交流程:

Flink 任务提交后, Client HDFS 上传Flink Jar 包和配置, 之后向Yarn ResourceManager 提交任务, ResourceManager 分配Container 资源并通知对应的NodeManager 启动ApplicationMasterApplicationMaster 启动后加载Flink Jar 包和配置构建环境,然后启动JobManager,之后ApplicationMaster ResourceManager申请资源启动TaskManager ResourceManager 分配Container 资源后, 由ApplicationMaster 通知资源所在节点的NodeManager 启动TaskManager NodeManager 加载Flink Jar 包和配置构建环境并启动TaskManagerTaskManager启动后向JobManager 发送心跳包,并等待JobManager 向其分配任务。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。