Flink的内部原理

1. 四大组件的作用

作业管理器(JobManager):
JobManager 会向资源管理器(ResourceManager)请求执行任务必要的资源,也就是任务管理器(TaskManager)上 的插槽(slot),一旦获取到足够的资源, 就会将 '执行图’发送到运行的他们的TaskManager上,进行执行

资源管理器(ResourceManager):
主要负责管理任务管理器(TaskManager)的插槽(slot),TaskManger 插槽是 Flink 中 定义的处理资源单元, 启动的taskManager需要向resourceManager进行注册插槽, 交给它进行管理,分配.

任务管理器(TaskManager):

  • 真正执行任务的工作者, 每个taskManager上的插槽(slot)的数量限制了他的执行能力, 启动之后,会像资源管理器(ResourceManager)进行注册插槽,一旦jobManager将执行图发送过来, 就让插槽(slot)去进行执行任务
  • 每个TaskManager都是一个独立的JVM进程

分发器(Dispatcher):
Dispatcher 也会启动一个 Web UI,用来方便地展示和监控作业执行的信息。Dispatcher 在架构中可能并不是必需的,这取决于应用提交运行的方式

注意: slot就是flink处理任务的资源单位,任务真正都由它来进行执行,它的数量,也决定了TaskManager的执行能力


我们可以通过下面的图,来看一下他们分别负责的是什么内容?

在这里插入图片描述

yarn模式下, 因为有资源调度平台,会不太一样:

Flink 任 务 提 交 后 , Client 向 HDFS 上 传 Flink 的 Jar 包 和 配 置 , 之 后 向 Yarn ResourceManager 提 交 任 务 , ResourceManager 分 配 Container 资 源 并 通 知 对 应 的 NodeManager 启动 ApplicationMaster,ApplicationMaster 启动后加载 Flink 的 Jar 包 和配置构建环境,然后启动 JobManager,之后 ApplicationMaster 向 ResourceManager 申 请 资 源 启 动 TaskManager , ResourceManager 分 配 Container 资 源 后 , 由 ApplicationMaster 通 知 资 源 所 在 节 点 的 NodeManager 启 动 TaskManager , NodeManager 加载 Flink 的 Jar 包和配置构建环境并启动 TaskManager,TaskManager 启动后向 JobManager 发送心跳包,并等待 JobManager 向其分配任务。
如下图: 摘抄之尚硅谷文档
在这里插入图片描述


2.小知识概念

slot概念:
Task Slot 是静态的概念,是指 TaskManager 具有的并发执行能力,可以通过参数 taskmanager.numberOfTaskSlots 进行配置;

并行度(parallelism)概念:
并行度 parallelism 是动态概念, 即 TaskManager 运行程序时实际使用的并发能力,可以通过参数 parallelism.default(默认的并发能力)进行配置,也可以在代码中,或者提交程序时,也可以指定

任务链概念:
相同的并行度的 one to one操作, 且中间没有进行任何的重分区(比如聚合求和,是会进行hash分区的),那么执行图会将这两个算子整合成一个子任务, 但是这样的话, 如果当其中一个算子的操作过于复杂的话,再整合成一个的话,就会有压力, 我们可以在代码中,进行分开任务链,再单独指定slot资源

两个算子合成的任务拆分开:
disableChaining()方法将前后分开或者startNewChain()启动一个新的任务点

单独设置slot资源: 可以缓解slot压力
slotSharingGroup()方法

子任务共享slot:
默认情况下, flink的子任务是可以共享slot的,即使是不同的子任务,但前提就是他们必须来自同一个job(任务),也就是说,如果来了一个任务,它就只使用一个slot就可以了,

注意:slot的数量是会限制并行度的, 并行度的数量不可以超过的slot 的数量,不然程序是没有够多的资源的!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值