李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
大数据
正文
10.Flink数据流和执行图介绍
Leefs
2022-01-09 PM
1919℃
0条
[TOC] ### 一、数据流(Dataflow) #### 1.1 概述 **数据流(Dataflow)**:描述了数据如何在不同操作之间流动,Dataflow程序通常表现为**有向无环图(DAG)**。 #### 1.2 分类 **Flink程序由三部分组成:** + **Source(数据源)**:负责获取输入数据; Flink 在流处理和批处理上的 source 大概有 4 类:基于本地集合的 source、基于文件的 source、基于网络套接字的 source、自定义的 source。 自定义的 source 常见的有 Apache kafka、Amazon Kinesis Streams、RabbitMQ、Twitter Streaming API、Apache NiFi 等,当然你也可以定义自己的 source。 + **Transformation(数据处理)**:对数据进行处理加工,通常对应着多个算子; Filnk通常用到的算子包括 Map / FlatMap / Filter / KeyBy / Reduce / Fold / Aggregations / Window / WindowAll / Union / Window join / Split / Select / Project 等,操作很多,可以将数据转换计算成你想要的数据。 + **Sink(接收器)**:负责输出数据。 Flink 将转换计算后的数据发送的地点 ,你可能需要存储下来,Flink 常见的 Sink 大概有如下几类:写入文件、打印出来、写入 socket 、自定义的 sink 。 自定义的 sink 常见的有 Apache kafka、RabbitMQ、MySQL、ElasticSearch、Apache Cassandra、Hadoop FileSystem 等,同理你也可以定义自己的 sink。 #### 1.3 程序与数据流 图中下方顶点称为算子(Operator),表示计算。对应的边表示数据依赖关系。 算子是Dataflow程序的基本功能单元,他们从输入获取数据,对其进行计算,然后产生数据并发往输出以供后续处理。 ![10.Flink数据流和执行图介绍01.jpg](https://lilinchao.com/usr/uploads/2022/01/50916960.jpg) **说明** 在运行时,Flink 上运行的程序会被映射成“逻辑数据流”(dataflows),它包含了这三部分。**每一个 dataflow以一个或多个 sources 开始以一个或多个 sinks结束**。dataflow 类似于任意的有向无环图(DAG)。在大部分情况下,程序中的转换运算(transformations)跟dataflow中的算子(operator)是一一对应的关系,但有时候,一个transformation可能对应多个operator。 ### 二、执行图(ExecutionGraph) #### 2.1 概述 由Flink程序直接映射成的数据流图是StreamGraph,也被称为逻辑流图,因为它们表示的是计算逻辑的高级视图。为了执行一个流处理程序,Flink 需要将逻辑流图转换为物理数据流图(也叫执行图),详细说明程序的执行方式。 #### 2.2 分类 Flink中的执行图可以分成四层:**StreamGraph -> JobGraph -> ExecutionGraph -> 物理执行图**。 + **StreamGraph:**是根据用户通过 Stream API 编写的代码生成的最初的图。**用来表示程序的拓扑结构。** + **JobGraph:**StreamGraph经过优化后生成了JobGraph,提交给JobManager的数据结构。主要的优化为,**将多个符合条件的节点chain在一起作为一个节点**(任务链Operator Chains)后放在一个作业中执行,这样可以减少数据在节点之间流动所需要的序列化/反序列化/传输消耗。 + **ExecutionGraph:**JobManager根据JobGraph生成ExecutionGraph 。 ExecutionGraph是 JobGraph的**并行化**版本,是调度层最核心的数据结构。 + **物理执行图:**JobManager根据ExecutionGraph对Job进行调度后,在各个TaskManager上部署 Task 后形成的“图”,并不是一个具体的数据结构。 ![10.Flink数据流和执行图介绍02.png](https://lilinchao.com/usr/uploads/2022/01/597831971.png)
标签:
Flink
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:
https://lilinchao.com/archives/1820.html
上一篇
ELK生命周期管理使用详解
下一篇
11.Flink并行度和任务链
评论已关闭
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
47
NLP
4
标签云
前端
查找
栈
JVM
线程池
GET和POST
Spark Core
JavaWeb
Tomcat
字符串
数据结构
CentOS
SpringCloudAlibaba
Eclipse
Map
FileBeat
MyBatis
pytorch
Jenkins
Hbase
RSA加解密
NIO
Netty
链表
哈希表
Sentinel
递归
国产数据库改造
SQL练习题
Scala
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞
评论已关闭