flink 笔记一 Flink体系结构

1.Flink的重要角色

Flink是非常经典的Master/Slave结构实现,JobManagerMasterTaskManager是Slave。
JobManager
处理器(Master):
      1.协调分布式执行,它们用来调度
task,协调检查点(CheckPoint),协调失败时恢复等
      2.JobManager
接收的应用包括jar和JobGraph
TaskManager
处理器(Slave) 也称之为Worker:
      1.主要职责是从
JobManager处接收任务, 并部署和启动任务, 接收上游的数据并处理
      2.Task Manager
是在 JVM 中的一个或多个线程中执行任务的工作节点
      3.TaskManager
在启动的时候会向ResourceManager注册自己的资源信息(Slot的数量等)
ResourceManager  针对不同的环境和资源提供者,如(YARN
Me搜索,Kubernetes或独立部署),Flink提供了不同的ResourceManager
      1.作用:负责管理
Flink的处理资源单元---Slot
Dispatcher:作用:提供一个REST接口来让我们提交需要执行的应用。
      1.一旦一个应用提交执行,
Dispatcher会启动一个JobManager,并将应用转交给他。 
      2.Dispatcher还会启动一个webUI来提供有关作业执行信息   注意:某些应用的提交执行的方式,有可能用不到Dispatcher
各个组件之间的关系:

2.Flink的运行架构

2.1.Flink程序结构

source -> Transformation -> sink

2.2 TaskSubTask

Task 是一个阶段多个功能相同 SubTask 的集合,类似于 Spark 中的 TaskSet。
SubTask(子任务)比如一个执行操作map
,分布式的场景下会在(平行度)多个线程中同时执行,每个线程中执行的都叫做一个 SubTask

2.3 Operator chain(操作器链)

Flink 的所有操作都称之为 Operator ,客户端在提交任务的时候会对 Operator 进行优化操作,能进行合并的 Operator会被合并为一个Operator ,合并后的 Operator 称为 Operator chain,实际上就是一个执行链,每个执行链会在TaskManager上一个独立的线程中执行。
满足条件:
1.上下游算子的并行度一致
2.下游节点的入度为1
3.上下游节点都在同一个 slot group 中
4.下游节点的 chain 策略为 ALWAYS(可以与上下游链接,map、flatmap、filter等默认是ALWAYS)
5.上游节点的 chain 策略为 ALWAYS 或 HEAD(只能与下游链接,不能与上游链接,Source默认是HEAD)
6.两个节点间数据分区方式是 forward
7.用户没有禁用 chain(代码中是否配置disableChain())

2.4 Flink中的数据传输

在运行过程中,应用中的任务会持续进行数据交换。 为了有效利用网络资源和提高吞吐量,Flink 在处理任务间的数据传输过程中,采用了缓冲区机制。netty

2.5 任务槽和槽共享

Flink 将进程的内存进行了划分到多个 Slot 中。假设一个 TaskManager 机器有 3 slot ,那么每个 slot 占有 1/3 的内存(平分)。
内存被划分到不同的 slot 之后可以获得如下好处 :
  • TaskManager最多能同时并发执行的任务是可以控制的,那就是3个,因为不能超过slot的数量
  • slot有独占的内存空间,这样在一个TaskManager中可以运行多个不同的作业,作业之间不受影响
槽共享
默认情况下, Flink 允许子任务 subtast map[1] map[2] keyby[1] keyby[2] 共享插槽,即使它们是不同任务的子任务,只要它们来自同一个作业。结果是一个槽可以保存作业的整个管道。


      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值