Flink执行原理

本文涉及的产品
实时计算 Flink 版,1000CU*H 3个月
简介: Flink执行原理

1. Flink名词介绍

  1. Dataflow:Flink程序在执行时会被Flink系统映射成数据流模型,这个数据流模型就叫Dataflow.
    备注:Flink就是通过数据流模型对Operator进行优化。
  2. Operator:数据流模型中的每个操作被称作Operator,Operator分为Source Operator、Transformation Operator、Sink Operator。
  3. Partition:数据流模型是分布式和并行的,执行过程中会形成1—n个分区。
  4. Subtask:多个分区任务可以并行的,每个都是运行在一个线程中,也就是Subtask子任务。
  5. Parallelism:并行度,就是可以同时真正执行的子任务数/分区数。


2.Operator传递模式

数据在两个Operator(算子)之间传递的时候有两种模式:

  1. One to One 模式:一对一模式,分区内的数据是一一对应的,也就是没有shuffle
  2. Redistributing模式:重分布模式,分区内的数据会重新分布,也就是有shuffle

2. Operator Chain

客户端在提交任务的时候会根据Dataflow对Operator进行优化操作,能进行合并的Operator会被合并为一个OperatorChain(执行链),每个OperatorChain会在TaskManager上一个独立的线程中,也就是SubTask.

*备注: *只有OneToOne的才可以合并。

3.TaskSlot And Slot Sharing

  • TaskSlot任务槽
  1. TaskSlot任务槽就是运行任务的线程槽,有多少个TaskSlot就表示该TaskManager可以同时运行多少个SubTask / 线程。
  2. TaskSlot数量是用来限制一个TaskManager工作进程中可以同时运行多少个SubTask / 线程,TaskSlot是一个TaskManager中的最小资源分配单位,一个TaskManager中有多少TaskSlot就意味着能支持多少并发Task处理。
  3. Flink将进程的内存进行划分到多个TaskSlot中,内存被划分到不同的TaskSlot之后可以有如下好处:
  • TaskManager最多能同时并发的子任务数是可以通过TaskSlot 数量来控制的。
  • TaskSlot有独占的内存空间,这样在一个TaskManager中可以运行多个不同的作业,作业之间不受影响

备注: 这其实也就是在进程中增加线程概念的优点。

 

  • Slot Sharing任务槽共享
  1. Slot Sharing任务槽共享就表示线程执行完之后,任务槽不会被立即销毁或者回收,而是可以继续给下一个SubTask使用。
  2. Flink允许子任务共享插槽,即使他们是不同阶段的SubTask,只要他们是来自同一个作业。比如下图中的map 和keyBy和sink在一个TaskSlot里执行以达到资源共享的目的。
  3. 允许插槽共享有两个主要好处:
  • 资源分配更加公平,如果有比较空闲的Slot可以将更多的任务分配给它
  • 有了任务槽共享,可以提高资源的利用率。

备注

  1. slot是静态的概念,是指TaskManager具有的并发执行的能力。
  2. parallelism是动态的概念,是指程序运行时实际使用的并发能力。

4.Flink执行流程

  1. StreamGraph:最初的程序执行逻辑流程,也就是算子之间的前后顺序–在Client上生成
  2. JobGraph:将OneToOne的Operator合并为OperatorChain–在Client上生成
  3. ExecutionGraph:将JobGraph根据代码中设置的并行度和请求的资源进行并行化规划!–在JobManager上生成
  4. 物理执行图:将ExecutionGraph的并行计划,落实到具体的TaskManager上,将具体的SubTask落实到具体的TaskSlot内进行运行。

相关实践学习
基于Hologres+Flink搭建GitHub实时数据大屏
通过使用Flink、Hologres构建实时数仓,并通过Hologres对接BI分析工具(以DataV为例),实现海量数据实时分析.
实时计算 Flink 实战课程
如何使用实时计算 Flink 搞定数据处理难题?实时计算 Flink 极客训练营产品、技术专家齐上阵,从开源 Flink功能介绍到实时计算 Flink 优势详解,现场实操,5天即可上手! 欢迎开通实时计算 Flink 版: https://cn.aliyun.com/product/bigdata/sc Flink Forward Asia 介绍: Flink Forward 是由 Apache 官方授权,Apache Flink Community China 支持的会议,通过参会不仅可以了解到 Flink 社区的最新动态和发展计划,还可以了解到国内外一线大厂围绕 Flink 生态的生产实践经验,是 Flink 开发者和使用者不可错过的盛会。 去年经过品牌升级后的 Flink Forward Asia 吸引了超过2000人线下参与,一举成为国内最大的 Apache 顶级项目会议。结合2020年的特殊情况,Flink Forward Asia 2020 将在12月26日以线上峰会的形式与大家见面。
目录
相关文章
|
Java 流计算
【极数系列】Flink搭建入门项目Demo & 秒懂Flink开发运行原理(05)
【极数系列】Flink搭建入门项目Demo & 秒懂Flink开发运行原理(05)
472 3
|
消息中间件 缓存 监控
Flink背压原理以及解决优化
Flink背压原理以及解决优化
901 0
|
12月前
|
SQL 消息中间件 分布式计算
大数据-124 - Flink State 01篇 状态原理和原理剖析:状态类型 执行分析
大数据-124 - Flink State 01篇 状态原理和原理剖析:状态类型 执行分析
219 5
|
10月前
|
存储 物联网 大数据
探索阿里云 Flink 物化表:原理、优势与应用场景全解析
阿里云Flink的物化表是流批一体化平台中的关键特性,支持低延迟实时更新、灵活查询性能、无缝流批处理和高容错性。它广泛应用于电商、物联网和金融等领域,助力企业高效处理实时数据,提升业务决策能力。实践案例表明,物化表显著提高了交易欺诈损失率的控制和信贷审批效率,推动企业在数字化转型中取得竞争优势。
389 16
|
12月前
|
消息中间件 监控 Java
大数据-109 Flink 体系结构 运行架构 ResourceManager JobManager 组件关系与原理剖析
大数据-109 Flink 体系结构 运行架构 ResourceManager JobManager 组件关系与原理剖析
220 1
|
12月前
|
存储 SQL 分布式计算
大数据-127 - Flink State 04篇 状态原理和原理剖析:状态存储 Part2
大数据-127 - Flink State 04篇 状态原理和原理剖析:状态存储 Part2
108 0
|
12月前
|
存储 消息中间件 大数据
大数据-126 - Flink State 03篇 状态原理和原理剖析:状态存储 Part1
大数据-126 - Flink State 03篇 状态原理和原理剖析:状态存储 Part1
232 0
|
12月前
|
存储 SQL 分布式计算
大数据-125 - Flink State 02篇 状态原理和原理剖析:广播状态
大数据-125 - Flink State 02篇 状态原理和原理剖析:广播状态
156 0
|
12月前
|
消息中间件 NoSQL Kafka
大数据-116 - Flink DataStream Sink 原理、概念、常见Sink类型 配置与使用 附带案例1:消费Kafka写到Redis
大数据-116 - Flink DataStream Sink 原理、概念、常见Sink类型 配置与使用 附带案例1:消费Kafka写到Redis
732 0
|
资源调度 算法 Java
Flink四种集群模式原理
Flink四种集群模式原理
661 0

热门文章

最新文章