Flink零基础学习(四)RunTime总览以及核心组件简单介绍

用户的任务会以job方式提交给集群,runtime负责整个作业的调度,支持各种作业方式。

简单的一个作业表单

Flink零基础学习(四)RunTime总览以及核心组件简单介绍_第1张图片

实际上作业是:

Flink零基础学习(四)RunTime总览以及核心组件简单介绍_第2张图片

这里就是逻辑图(JobVertex)和执行图(ExecutionVertex)的区别,虚线圈表示的是一个Operator chain(要求并发度一致,数据交换1对1)

按官网总结runtime图如下:

Flink零基础学习(四)RunTime总览以及核心组件简单介绍_第3张图片

核心组件有JobMaster(管理作业),ResourceMnager(资源调度),TaskExecutor(任务执行器)。下面分别介绍作用:

一.Jobmaster功能:

1.作业生命周期的管理 2.任务的调度 3.出错恢复 4.作业状态查询 5.分布式快照(checkpoint和savepoint)

Flink零基础学习(四)RunTime总览以及核心组件简单介绍_第4张图片

1.1作业的生命周期有正常流程(created,running,finshed),异常( restarting .failing,failed)用户操作(cancelling,canceled)以及其他

1.2任务调度(核心):根据调度策略(SchedulingStrategy)来控制调度的时机.细分为事件驱动(类如任务开始后,生命周期变化或者失败后重启);多种调度策略(流式策略(Eager),批次策略(lazy from sources)等)

正常调度过程如下:初始(created),申请资源(scheduled),开始部署(deploying),部署成功(running)

出错恢复过程: 停止相关任务,重置任务状态,通知调度策略重新调度,由出错恢复策略决定

二.任务运行容器(TaskExecutor)

分为资源模型,资源的子集

Flink零基础学习(四)RunTime总览以及核心组件简单介绍_第5张图片

Task资源会被分配成一个个Task Slot(按数量均分)

Task Solt可以共享,但必须是同一个共享组(SlotSharingGroup)中的不同类型的(jobVertex)的任务,这样做是为了减少数据交换开销,方便用户资源配置和负载均衡

Flink零基础学习(四)RunTime总览以及核心组件简单介绍_第6张图片

 任务执行图(引用其他文档)

Flink零基础学习(四)RunTime总览以及核心组件简单介绍_第7张图片

每个任务独占一个线程,任务从InputGate中读取数据,送到OperatorChain,OperatorChain再将数据输出到ResultPartition

三.资源管理

ResourceManager管理TaskExecuto,又必须向jobMaster注册,其下SlotManager 管理slot(通过心跳更新slot状态),所以一个slot申请流程是:JobMaster->resourceManager->taskExecutor->JM

 Flink零基础学习(四)RunTime总览以及核心组件简单介绍_第8张图片

 

 

 

 

你可能感兴趣的:(Flink,flink,大数据,big,data)