Flink执行原理

本文涉及的产品
实时计算 Flink 版,5000CU*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轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
目录
相关文章
|
4月前
|
Java 流计算
【极数系列】Flink搭建入门项目Demo & 秒懂Flink开发运行原理(05)
【极数系列】Flink搭建入门项目Demo & 秒懂Flink开发运行原理(05)
178 3
|
4月前
|
消息中间件 缓存 监控
Flink背压原理以及解决优化
Flink背压原理以及解决优化
319 0
|
23天前
|
资源调度 算法 Java
Flink四种集群模式原理
Flink四种集群模式原理
28 0
|
11月前
|
程序员 API 数据安全/隐私保护
Flink--8、时间语义、水位线(事件和窗口、水位线和窗口的工作原理、生产水位线、水位线的传递、迟到数据的处理)
Flink--8、时间语义、水位线(事件和窗口、水位线和窗口的工作原理、生产水位线、水位线的传递、迟到数据的处理)
|
4月前
|
运维 监控 Java
面经:Storm实时计算框架原理与应用场景
【4月更文挑战第11天】本文是关于Apache Storm实时流处理框架的面试攻略和核心原理解析。文章分享了面试常见主题,包括Storm的架构与核心概念(如Spout、Bolt、Topology、Tuple和Ack机制),编程模型与API,部署与运维,以及应用场景与最佳实践。通过代码示例展示了如何构建一个简单的WordCountTopology,强调理解和运用Storm的关键知识点对于面试和实际工作的重要性。
203 4
面经:Storm实时计算框架原理与应用场景
|
4月前
|
存储 NoSQL 分布式数据库
【Flink】Flink分布式快照的原理是什么?
【4月更文挑战第21天】【Flink】Flink分布式快照的原理是什么?
|
4月前
|
SQL Prometheus Kubernetes
实时计算 Flink版产品使用合集之时间戳读取的原理是什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
4月前
|
SQL 并行计算 大数据
【大数据技术攻关专题】「Apache-Flink零基础入门」手把手+零基础带你玩转大数据流式处理引擎Flink(基础加强+运行原理)
关于Flink服务的搭建与部署,由于其涉及诸多实战操作而理论部分相对较少,小编打算采用一个独立的版本和环境来进行详尽的实战讲解。考虑到文字描述可能无法充分展现操作的细节和流程,我们决定以视频的形式进行分析和介绍。因此,在本文中,我们将暂时不涉及具体的搭建和部署步骤。
542 3
【大数据技术攻关专题】「Apache-Flink零基础入门」手把手+零基础带你玩转大数据流式处理引擎Flink(基础加强+运行原理)
|
4月前
|
机器学习/深度学习 分布式计算 BI
Flink实时流处理框架原理与应用:面试经验与必备知识点解析
【4月更文挑战第9天】本文详尽探讨了Flink实时流处理框架的原理,包括运行时架构、数据流模型、状态管理和容错机制、资源调度与优化以及与外部系统的集成。此外,还介绍了Flink在实时数据管道、分析、数仓与BI、机器学习等领域的应用实践。同时,文章提供了面试经验与常见问题解析,如Flink与其他系统的对比、实际项目挑战及解决方案,并展望了Flink的未来发展趋势。附带Java DataStream API代码样例,为学习和面试准备提供了实用素材。
374 0
|
4月前
|
存储 NoSQL MongoDB
阿里云 Flink 原理分析与应用:深入探索 MongoDB Schema Inference
本文整理自阿里云 Flink 团队归源老师关于阿里云 Flink 原理分析与应用:深入探索 MongoDB Schema Inference 的研究。
47163 2
阿里云 Flink 原理分析与应用:深入探索 MongoDB Schema Inference