首页 > 其他分享 >flink教程:Flink的架构包含哪些?介绍下技术架构和运行架构

flink教程:Flink的架构包含哪些?介绍下技术架构和运行架构

时间:2023-09-03 13:05:19浏览次数:35  
标签:flink 架构 JobManager Flink 作业 TaskManager 客户端


Flink的架构包含哪些?介绍下技术架构和运行架构

flink教程:Flink的架构包含哪些?介绍下技术架构和运行架构_flink

Flink 架构分为 技术架构运行架构 两部分。

技术架构

如下图为Flink技术架构:

flink教程:Flink的架构包含哪些?介绍下技术架构和运行架构_Server_02

Flink 作为流批一体的分布式计算引擎,必须提供面向开发人员的API层,同时还需要跟外部数据存储进行交互,需要连接器,作业开发、测试完毕后,需要提交集群执行,需要部署层,同时还需要运维人员能够管理和监控,还提供图计算、机器学习、SQL等,需要应用框架层

运行架构

如下图为Flink运行架构:

flink教程:Flink的架构包含哪些?介绍下技术架构和运行架构_客户端_03

Flink 集群采取 Master - Slave 架构,Master的角色为 JobManager,负责集群和作业管理,Slave的角色是 TaskManager,负责执行计算任务,同时,Flink 提供客户端 Client 来管理集群和提交任务,JobManagerTaskManager 是集群的进程。

(1)Client

Flink 客户端是F1ink 提供的 CLI 命令行工具,用来提交 Flink 作业到 Flink 集群,在客户端中负责 StreamGraph (流图)和 Job Graph (作业图)的构建。

(2)JobManager

JobManager 根据并行度将 Flink 客户端提交的Flink 应用分解为子任务,从资源管理器 ResourceManager 申请所需的计算资源,资源具备之后,开始分发任务到 TaskManager 执行 Task,并负责应用容错,跟踪作业的执行状态,发现异常则恢复作业等。

(3)TaskManager

TaskManager 接收 JobManage 分发的子任务,根据自身的资源情况 管理子任务的启动、 停止、销毁、异常恢复等生命周期阶段。Flink程序中必须有一个TaskManager。

组件列表

Flink的架构由多个组件组成,每个组件都承担着特定的角色和功能。下面是Flink的主要组件和其在架构中的角色:

  1. JobManager(作业管理器):
  • JobManager是Flink的主要控制节点,负责接收和调度作业(Job)的执行。
  • 它协调整个流处理作业的执行、管理作业的状态和元数据,并协调任务的调度和故障恢复。
  • JobManager负责从客户端接收作业图(JobGraph),对作业进行分配和调度,以及协调所有的任务执行。
  1. TaskManager(任务管理器):
  • TaskManager是Flink的工作节点,负责执行具体的任务。
  • 它根据JobManager的指令,将作业划分为一组并发的任务(Task)并执行。
  • TaskManager负责管理任务的生命周期、处理数据流的输入和输出,并协调任务之间的通信和数据交换。
  1. ResourceManager(资源管理器):
  • ResourceManager负责管理Flink集群中的资源,包括计算资源(CPU、内存等)和任务插槽(Task Slot)。
  • 它与JobManager协作,根据作业的需求和集群的资源状况来分配任务插槽。
  • ResourceManager还负责监控和管理集群的健康状态,并根据需要进行资源的动态分配和调整。
  1. Blob Server:
  • Blob Server是Flink用于存储和分发作业相关的二进制文件(例如JAR包、配置文件等)的组件。
  • 它允许作业提交者将作业所需的文件上传到Blob Server,并且TaskManager可以从Blob Server上获取所需的文件。
  1. 分布式存储系统:
  • Flink需要一个分布式存储系统来存储检查点数据、状态信息和元数据。
  • Flink支持多种存储系统,如HDFS、S3、GCS等。这些存储系统用于持久化数据,以便在故障发生时进行恢复和重启。
  1. 客户端:
  • 客户端是与Flink交互的用户接口,用于提交作业、查询作业状态和监控作业的执行。
  • 客户端可以是命令行界面、图形界面或通过Flink提供的API进行编程。

以上是Flink的主要组件和其在架构中的角色。这些组件共同协作,实现了Flink的分布式流处理功能,并提供了高性能、容错性和可伸缩性的数据处理能力。


标签:flink,架构,JobManager,Flink,作业,TaskManager,客户端
From: https://blog.51cto.com/zhangxueliang/7339495

相关文章

  • flink教程:flink的有界、无界数据流、流批一体、容错能力等概念
    能否详细解释一下其中的数据流、流批一体、容错能力等概念?概述数据流:所有产生的数据都天然带有时间概念,把事件按照时间顺序排列起来,就形成了一个事件流,也被称作数据流。流批一体:首先必须先明白什么是有界数据和无界数据有界数据,就是在一个确定的时间范围内的数据流,有开始,......
  • flink教程:Flink 和 Spark Streaming的区别?
    Flink和SparkStreaming的区别?Flink和SparkSreaming最大的区别在于:Flink是标准的实时处理引擎,基于事件驱动,以流为核心,而SparkStreaming的RDD实际是一组小批次的RDD集合,是微批(Micro-Batch)的模型,以批为核心。概述下面我们介绍两个框架的主要区别:1.架构模型SparkStreamin......
  • flink基础:什么是Flink?
    什么是Flink?描述一下Flink是一个以流为核心的高可用、高性能的分布式计算引擎。具备流批一体,高吞吐、低延迟,容错能力,大规模复杂计算等特点,在数据流上提供数据分发、通信等功能。ApacheFlink是一个开源的流式处理和批处理框架,旨在处理高吞吐量和低延迟的大规模数据流。它提供了......
  • 分布式架构
    目录认识微服务认识微服务单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署特点:简单方便、高度耦合、扩展性差,适合小型项目。例如:学生管理系统分布式架构:根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务特点:松耦合,扩展性好,但架构复杂,难度......
  • 微服务架构|go-zero 的自适应熔断器
    原文链接:go-zero的自适应熔断器上篇文章我们介绍了微服务的限流,详细分析了计数器限流和令牌桶限流算法,这篇文章来说说熔断。熔断和限流还不太一样,限流是控制请求速率,只要还能承受,那么都会处理,但熔断不是。在一条调用链上,如果发现某个服务异常,比如响应超时。那么调用者为了避免......
  • Flink 1.17教程:任务槽Task Slots和并行度的关系
    任务槽TaskSlots在ApacheFlink中,任务槽(TaskSlots)是指可用于执行并行任务的资源单元。每个任务槽可以看作是一个可用的执行线程或处理单元,用于并行执行作业的不同部分。通俗来说,可以将任务槽想象成一个工作台,而每个工作台上都可以同时进行一项任务。任务槽的数量决定了同时可以......
  • Flink 1.17教程:Standalone会话模式运行时架构及并行度
    运行时架构——Standalone会话模式为例并行度并行度是指在计算过程中同时执行多个任务或操作的能力。在ApacheFlink中,并行度是指同时执行作业中的多个任务或算子的能力。并行度的引入是为了解决以下问题:提高计算速度:通过将任务拆分成多个子任务,并行执行它们,可以大大提高计算速度......
  • Flink 1.17教程:历史服务器History Server
    K8S运行模式容器化部署是如今业界流行的一项技术,基于Docker镜像运行能够让用户更加方便地对应用进行管理和运维。容器管理工具中最为流行的就是Kubernetes(k8s),而Flink也在最近的版本中支持了k8s部署模式。基本原理与YARN是类似的,具体配置可以参见官网说明,这里我们就不做过多讲解了......
  • Flink 1.17教程:并行度设置&优先级
    并行度设置&优先级并行度(Parallelism)并行度的设置在Flink中,可以用不同的方法来设置并行度,它们的有效范围和优先级别也是不同的。代码中设置我们在代码中,可以很简单地在算子后跟着调用setParallelism()方法,来设置当前算子的并行度:stream.map(word->Tuple2.of(word,1L)).setParall......
  • Flink 1.17教程:算子链Operator Chain
    算子链OperatorChain在ApacheFlink中,算子链(OperatorChaining)是将多个操作符(算子)连接在一起形成一个链式结构的优化技术。算子链的作用是将多个操作符合并为一个单一的任务单元,以减少通信开销、提高执行效率和减少资源占用。通俗来说,算子链的作用可以比喻为将多个操作合并成一......