searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享

Flink架构

2024-09-24 10:07:24
7
0

1.运行架构:

image-20240906095630348.png
Source: 数据源, 常见数据源:本地数据集合,文件,网络套接字,自定义(Kafka, RabbitMQ)等source.
Transformation: 数据转换操作, 有Map/FlatMap/Filter/KeyBy/Reduce/Fold/Aggregations/Window/
WindowAll/Union/Window join/Split/Select等.
Sink: 接收器,Flink 将转换计算后的数据发送出去。常见的有:写入文件,打印,写入socket,自定义(Kafka, RabbitMQ,Mysql,ElasticSearch,Cassandra,Hadoop FileSystem)等

2: Flink 并行数据流

Flink程序在执行的时候,会被映射成一个Streaming Dataflow(由一组Stream和Transformation Operator组成)。启动从一个或多个Source Operator开始,结束于一个或多个Sink Operator。
Flink程序运行是并行和分布式的,执行的时候,一个stream包含一个或多个分区,一个operator包含1个或多个operator子任务。操作子任务间相互独立,在不同线程甚至分布在不同的机器或容器上。operator子任务的数量是此operator的并行度。相同程序中不同的operator有不同的级别的并行度。
image-20240906120024040.png

3.任务调度和执行

  • Flink Client: 客户端获取代码并做转换,之后提交给JobManager
  • JobManager: 对作业进行调度管理;再获取到要执行的作业后,进一步处理转换,然后分发任务给众多的TaskManager.
    TaskManager: 从JobManager接收任务,并部署启动任务,接上游数据并处理。TaskManager创建的时候设置了Slot,没个Slot可以执行一个任务Task. 每个TaskManager是一个JVM的进程,可以在不同的线程中执行一个或多个子任务。
    image-20240906142450397.png

    4.任务槽

图中有2个TaskManager,每个TaskManager有3个slot。
Flink允许子任务共享slot,即使是不同任务的子任务,只要它们来自同一个作业。一个slot可以保存作业的整个管道。有了任务槽共享,可以将基本并行度从2提升到6.提高了分槽资源的利用率。
image-20240906145857229.png

0条评论
作者已关闭评论
AndyXiong
4文章数
0粉丝数
AndyXiong
4 文章 | 0 粉丝
AndyXiong
4文章数
0粉丝数
AndyXiong
4 文章 | 0 粉丝

Flink架构

2024-09-24 10:07:24
7
0

1.运行架构:

image-20240906095630348.png
Source: 数据源, 常见数据源:本地数据集合,文件,网络套接字,自定义(Kafka, RabbitMQ)等source.
Transformation: 数据转换操作, 有Map/FlatMap/Filter/KeyBy/Reduce/Fold/Aggregations/Window/
WindowAll/Union/Window join/Split/Select等.
Sink: 接收器,Flink 将转换计算后的数据发送出去。常见的有:写入文件,打印,写入socket,自定义(Kafka, RabbitMQ,Mysql,ElasticSearch,Cassandra,Hadoop FileSystem)等

2: Flink 并行数据流

Flink程序在执行的时候,会被映射成一个Streaming Dataflow(由一组Stream和Transformation Operator组成)。启动从一个或多个Source Operator开始,结束于一个或多个Sink Operator。
Flink程序运行是并行和分布式的,执行的时候,一个stream包含一个或多个分区,一个operator包含1个或多个operator子任务。操作子任务间相互独立,在不同线程甚至分布在不同的机器或容器上。operator子任务的数量是此operator的并行度。相同程序中不同的operator有不同的级别的并行度。
image-20240906120024040.png

3.任务调度和执行

  • Flink Client: 客户端获取代码并做转换,之后提交给JobManager
  • JobManager: 对作业进行调度管理;再获取到要执行的作业后,进一步处理转换,然后分发任务给众多的TaskManager.
    TaskManager: 从JobManager接收任务,并部署启动任务,接上游数据并处理。TaskManager创建的时候设置了Slot,没个Slot可以执行一个任务Task. 每个TaskManager是一个JVM的进程,可以在不同的线程中执行一个或多个子任务。
    image-20240906142450397.png

    4.任务槽

图中有2个TaskManager,每个TaskManager有3个slot。
Flink允许子任务共享slot,即使是不同任务的子任务,只要它们来自同一个作业。一个slot可以保存作业的整个管道。有了任务槽共享,可以将基本并行度从2提升到6.提高了分槽资源的利用率。
image-20240906145857229.png

文章来自个人专栏
flink架构
1 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0