李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
大数据
正文
10.Flink数据流和执行图介绍
Leefs
2022-01-09 PM
1297℃
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
标签云
DataX
CentOS
Stream流
数学
Thymeleaf
Nacos
NIO
MyBatisX
Spark Core
ClickHouse
设计模式
Http
前端
Jquery
算法
Elastisearch
Ubuntu
Kafka
Livy
Redis
MyBatis-Plus
RSA加解密
随笔
Spark SQL
Spark Streaming
Map
Scala
Hive
Quartz
JavaSE
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞