Flink集群运行剖析
Flink 运行时由两种类型的进程组成:一个 JobManager 和一个或者多个 TaskManager。
Client:Client是提交作业的客户端,虽然不是运行时和作业执行时的一部分,但它负责准备和提交作业到JobManager,它可以运行在任何机器上,只要与JobManager环境连通即可。
JobManager:JobManager它决定何时调度下一个 task(或一组 task)、对完成的 task 或执行失败做出反应、协调 checkpoint、并且协调从故障中恢复等,JobManager根据客户端提交的应用将应用分解为子任务,从资源管理器(YARN等)申请所需的计算资源,然后分发任务到TaskManager执行,并跟踪作业的执行状态等。整个集群有且仅有一个活跃的JobManager,高可用(HA)设置中可能有多个 JobManager,其中一个始终是 leader,其他的则是 standby
TaskManager:TaskManager是Flink集群的工作进程。Task被调度到TaskManager上执行。TaskManager相互通信,只为在后续的Task之间交换数据,在 TaskManager 中资源调度的最小单位是 task slot。TaskManager 中 task slot 的数量表示并发处理 task 的数量。请注意一个 task slot 中可以执行多个算子
Task:Flink中的每一个操作算子称为一个Task(任务)。Task是基本的工作单元,由Flink的Runtime来执行。每个Task在一个JVM线程中执行。多个Task可以在同一个JVM进程中共享TCP连接(通过多路复用技术)和心跳信息。它们还可能共享数据集和数据结构,从而降低每个Task的开销。
Task Slot:TaskManager为了控制执行的Task数量,将计算资源(内存)划分为多个Task Slot(任务槽),每个Task Slot代表TaskManager的一份固定内存资源,Task则在Task Slot中执行。
1、运行模式
Flink有多种运行模式,可以运行在一台机器上,称为本地(单机)模式;也可以使用YARN作为底层资源调度系统以分布式的方式在集群中运行,称为Flink On YARN模式;还可以使用Flink自带的资源调度系统,不依赖其他系统,称为Flink Standalone模式。还有将Flink部署到Kubernetes的模式,称为Flink On Kubernetes模式。
1.1、单机(本地)模式
直接下载jar包后启动。
1.2、Flink Standalone模式
Flink Standalone模式为经典的主从(Master/Slave)架构,资源调度是Flink自己实现的。集群启动后,主节点上会启动一个JobManager进程,类似YARN集群的ResourceManager,因此主节点也称为JobManager节点;各个从节点上会启动一个TaskManager进程,类似YARN集群的NodeManager,因此从节点也称为TaskManager节点。
执行流程:Client接收到Flink应用程序后,将作业提交给JobManager。JobManager要做的第一件事就是分配Task(任务)所需的资源。完成资源分配后,Task将被JobManager提交给相应的TaskManager,TaskManager会启动线程开始执行。在执行过程中,TaskManager会持续向JobManager汇报状态信息,例如开始执行、进行中或完成等状态。作业执行完成后,结果将通过JobManager发送给Client
1.3、Flink On YARN模式
YARN只负责资源的管理和调度,运行哪种应用程序由用户自己实现,因此可能在YARN上同时运行MapReduce程序、Spark程序、Flink程序等。
Flink On YARN模式下的运行架构:
1.4、Flink On Kubernetes模式
这种模式没用过,不做介绍
标签:Task,架构,Flink,JobManager,YARN,TaskManager,模式,原理 From: https://www.cnblogs.com/wangqian1002/p/18181610