目录
1. Flink整体架构概览
如下为Flink的架构图,用户可以使用4种方式(DataStream、DataSet等)编写flink任务,这些任务逻辑会生成一个JobGraph。
JobGraph由source、map()、keyBy()/window()和slink等算子组成。
当JobGraph提交给Flink集群后,能够以4种模式运行(Local、Yarn等)
2. Flink架构概览之--JobManager
JobManager的架构图如下所示,JobManager的主要功能有:
- 将JobGraph转换成Execution Graph,最终将EG拿来运行。
- Task Scheduling组件负责Task的调度。
- Actor System负责与TaskManager通信。
- Checkpoit Coordinator负责协调整个任务(source、算子、sink等)的checkpoint,包括checkpoint的开始和完成。
- Recovery Metadata,用于进行故障恢复,从metadata里读取数据。
3. Flink架构概览之--TaskManager
TaskManager是负责具体任务的执行过程,在JobManager申请到资源后,开始启动,TaskManager的架构图如下所示。主要包含的组件有6个:
- Memory & I/O manager,即内存I/O管理。
- Network manager,网络管理。
- Actor system,负责与JobManager通信。
- Data exechange,负责与其他taskmanager交换中间结果。
- Task Slot,资源调度最小单位,每个任务都运行在一个Task slot中,taskmanager被分成很多个 task slot。
4. Standalone模式运行架构图
首先介绍下standalone模式运行架构图,如下图:
Standalone模式下,任务运行过程分析:
- 该模式下,Master和TaskManager可以运行在同一台机器上,也可以运行在不同的机器上。
- Master进程中,ResourceManager的作用是对资源进行管理。用户通过Flink Cluster Client将JobGraph提交给Master时,会先经过Dispatcher。
- Dispatcher收到请求后,生成一个JobManager,这个JobManager接着向ResourceManager申请资源slot,最终启动TaskManager。
- TaskManager启动后,会向RM注册,注册之后JobManager再将具体的Task任务分配给这个TaskManger的slot中去执行
5. Flink运行时相关的主要组件概述
- Client:用户通过SQL、或API方式提交任务,提交后会生成一个JobGraph。
- JobManager:接收到用户请求后,对任务进行调度,并且申请资源启动TaskManager。
- TaskManager:负责具体Task的执行。TaskManager向JobManager进行注册,当TM接收到JobManager分配的任务后,开始执行具体的任务。
6. Yarn架构原理图
Yarn中主要的是ResourceManager,大致工作流程是
- Client提交任务,会先给到Resource Manager。
- Resource Manager会启动Container,接着进一步启动Application Master。
- Application Master启动后,Application Master会再次向ResourceMaster申请资源。
- RM将资源分配给AM后,AM将把具体的Task调度起来执行。
- RM:负责处理客户端请求,启动/监控AM、监控NM、资源分配与调度。
- AM:运行在Slave上,负责数据切分,申请资源、任务监控和容错。
- NM:Slave上运行,节点资源管理、AM/RM通信及汇报状态。
- Container:负责对资源抽象(内存、CPU、磁盘和网络等)
7. Yarn架构原理-交互图
大致交互流程如下文字描述
- 先分配一个Container,用来启动AM
- AM启动后向RM注册,并申请资源和RM信息,要求启动程序
- 一个或多个NM启动Map/Reduce程序 Task
- NM不断汇报map/reduce task的 状态给AM
- 当所有map/reduce task都执行完后,AM向RM汇报map/reduce任务已结束,并销毁自己