Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >flink集群模式

flink集群模式

原创
作者头像
用户11134802
修改于 2024-06-12 12:07:13
修改于 2024-06-12 12:07:13
2240
举报
文章被收录于专栏:flink基础知识点flink基础知识点

前言 :

TaskManager的组成:由若干个(在底层flink-conf.yaml文件配置)taskSlot组成

这是一个flink集群的各个角色的分配,TaskManager可以在部署到其他虚拟机上,一般默认的数量是三个。

jobmanger:负责整个 Flink 集群任务的调度以及资源的管理从客户端中接收作业

客户端通过将编写好的 Flink 应用编译打包,提交到 JobManager,JobManger根据集群TaskManager 上 TaskSlot 的使用情况,为提交的应用分配相应的 TaskSlot 资源并命令 TaskManager 启动与执行从客户端中获取的作业;JobManger还负责协调Checkpoint 操作,每个 TaskManager 节点 收到 Checkpoint 触发指令后,完成 Checkpoint 操作,所有的 Checkpoint 协调过程都是在 Fink JobManager 中完成。

TaskManager:负责具体的任务执行和任务资源申请和管理

TaskManger从 JobManager 接收需要执行的任务,然后申请Slot 资源(根据集群Slot使用情况以及并行度设置)并尝试启动Task,开始执行作业,TaskManager中最小的资源调度单位是TaskSlots。TaskManger数量由集群中Slave数量决定

taskSlots:Task共享系统资源(内存);TaskManger并发执行能力决定性因素。

TaskManager 是一个 JVM 进程,是实际负责执行计算的Worker,会以独立的线程来执行一个task或多个subtask。为了控制一个 TaskManager 能执行多少个 task,Flink 提出了 Task Slot 的概念

(1)Task之间通过 TaskSlot 方式共享系统资源(内存)TaskSlots也决定TaskManger并发执行能力

(2)每个TaskSlot代表TaskManager资源不同分割。例如,具有三个插槽的TaskManager会将其内存的1/3平均分配到每个TaskSlot。分配资源意味着子任务不会与其他作业的子任务竞争内存,而是具有一定数量的保留托管内存。需要注意的是,此处没有对CPU进行隔离。当前TaskSlot仅将任务的内存进行隔离,简言之,即每个TaskSlot持有部分TaskManger内存,同一个作业下的task/subtask可共享TaskSlot

Client:Flink程序提交的客户端

Client是Flink程序提交的客户端,当用户提交一个Flink程序时,会首先创建一个Client,该Client首先会对用户提交的Flink程序进行预处理,并提交到Flink集群中处理。正因为其需要提交到Flink集群,所以Client需要从用户提交的Flink程序配置中获取JobManager的地址,并建立到JobManager的连接,将Flink Job提交给JobManager。

各个角色执行的功能:

flink client 相当于甲方,把job(需求)转换并提交给jobmanager(领导),然后jobmanger把job拆分成各个算子,分配给TaskManager执行。

-----------------------------------------------------------分割线-------------------------------------------------------------------------

1、会话模式(Session Mode

工作模式:

会话模式是先启动一个集群,此时集群的资源已确定,所有的 flink client提交的job作业都会共享这些固定的资源 。当集群的资源不足,新提交的任务可能会失败。当一个TaskManager执行的job作业过多的时候,若是某一个作业导致TaskManager宕机,已经提交的但尚未完成的job都会收到影响。

缺点:

资源共享会导致很多问题,比如死锁问题。

特点:

只适合当个规模小、执行时间短的大量作业 。

2、单作业模式(Per-Job Mode)

工作模式:

单作业模式为flink client提交的每个作业单独启动一个集群,即一个作业一个集群,由客户端提交应用程序,然后启动集群,提交作业给jobmanger进行分发给taskmanager执行。job作业完成的时候,集群也会随之关闭。这样,即使是某一个job出错导致TaskManager宕机,也不会影响到其他job作业的运行。

该模式在生产环境运行更加稳定,是实际应用的首选模式。

注意:Flink 本身无法直接这样运行,所以单作业模式一般需要借助一些资源管 理框架来启动集群,比如 YARN、Kubernetes(K8S)。

3、应用模式(Application Mode)

需要为每一个提交的应用单独启动一个 JobManager,也就是创建一个集群。这 个 JobManager 只为执行这一个应用而存在,执行结束之后 JobManager 也就关闭了,这就是所 谓的应用模式

三个模式比较:

会话模式和单作业模式的应用代码都是在flink client上提交,有客户端提交给jobmanger。但是,这种方式客户端需要占用大量的网络带宽,去下载依赖和二进制数据发送给jobmanger,并且提交客户用的是一个指定节点,因此会加重消耗该节点的资源,严重会影响宕机。

单作业模式和应用模式的比较:

单作业模式是通过客户端来提交 的,客户端解析出的每一个作业对应一个集群;而应用模式下,是直接由 JobManager 执行应 用程序的,并且即使应用包含了多个作业,也只创建一个集群。 

--------------------------------------------------------------------------

Flink 任务停止后,JobManager 会将已经完成任务的统计信息进行存档,History Server 进程则在任务停止后可以对任务统计信息进行查询。比如:最后一次的 Checkpoint、任务运行时的相关配置。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
2021年大数据Flink(九):Flink原理初探
它扮演的是集群管理者的角色,负责调度任务、协调 checkpoints、协调故障恢复、收集 Job 的状态信息,并管理 Flink 集群中的从节点 TaskManager。
Lansonli
2021/10/11
1.2K0
Flink架构
Flink整体由JobManager和TaskManager组成,遵循主从设计原则,JobManager为Master节点,TaskManager为worker节点,组件之间通信是借助Akka Framework;
神秘的寇先森
2020/02/19
1.2K0
大数据Flink进阶(八):Apache Flink架构介绍
在Flink的整个软件架构体系中,同样遵循这分层的架构设计理念,在降低系统耦合度的同时,也为上层用户构建Flink应用提供了丰富且友好的接口。
Lansonli
2023/03/27
2.7K0
大数据Flink进阶(八):Apache Flink架构介绍
深入浅出总结Flink运行时架构
Flink 运行时架构主要包括四个不同的组件,它们会在运行流处理应用程序时协同工作:作业管理器(JobManager)、资源管理器(ResourceManager)、任务管理器(TaskManager),以及分发器(Dispatcher)。因为 Flink 是用 Java 和 Scala 实现的,所以所有组件都会运行在Java 虚拟机上。接下来对各个组件的功能进行简单介绍i。
百思不得小赵
2022/12/01
6800
深入浅出总结Flink运行时架构
Flink 面试题
Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。并且 Flink 提供了数据分布、容错机制以及资源管理等核心功能。
Tim在路上
2020/08/05
1.5K0
Flink灵魂17问,最新面试题
spark streaming 的 checkpoint 仅仅是针对 driver 的故障恢复做了数据和元数据的 checkpoint。而 flink 的 checkpoint 机制 要复杂了很多,它采用的是轻量级的分布式快照,实现了每个算子的快照,及流动中的数据的快照。
857技术社区
2022/05/17
7810
Flink核心概念之架构解析
Flink 是一个分布式系统,需要有效分配和管理计算资源才能执行流应用程序。它集成了所有常见的集群资源管理器,例如Hadoop YARN、Apache Mesos和Kubernetes,但也可以设置作为独立集群甚至库运行。
从大数据到人工智能
2022/02/08
7830
Flink核心概念之架构解析
Flink面试通关手册
2019 年是大数据实时计算领域最不平凡的一年,2019 年 1 月阿里巴巴 Blink (内部的 Flink 分支版本)开源,大数据领域一夜间从 Spark 独步天下走向了两强争霸的时代。Flink 因为其天然的流式计算特性以及强大的处理性能成为炙手可热的大数据处理框架。
大数据真好玩
2019/12/09
1.4K0
Flink面试通关手册
Flink学习——Flink概述
Flink程序需要提交给Client。 然后,Client将作业提交给Job Manager。 Job Manager负责协调资源分配和作业执行。 它首先要做的是分配所需的资源。 资源分配完成后,任务将提交给相应的Task Manager。 在接收任务时,Task Manager启动一个线程以开始执行。 执行到位时,Task Manager会继续向Job Manager报告状态更改。 可以有各种状态,例如开始执行,正在进行或已完成。 作业执行完成后,结果将发送回Client。
俺也想起舞
2020/02/13
1.7K0
2024年最新Flink教程,从基础到就业,大家一起学习--flink部署和集群部署(从本地测试到公司生产环境如何部署项目源码)
这些内容都是自己一边学习一边总结的,其中每一个知识点都是经过翻阅大量资料整理,包含一些常见的报错和报警都会详细的举例和说明,大家一起学习。
小白的大数据之旅
2024/11/20
4030
2024年最新Flink教程,从基础到就业,大家一起学习--flink部署和集群部署(从本地测试到公司生产环境如何部署项目源码)
【最全的大数据面试系列】Flink面试题大全
spark streaming 的 checkpoint 仅仅是针对 driver 的故障恢复做了数据和元数据的checkpoint。而 flink 的 checkpoint 机制 要复杂了很多,它采用的是轻量级的分布式快照,实现了每个算子的快照,及流动中的数据的快照。
大数据小禅
2021/12/15
8840
Flink入门(二)——Flink架构介绍
了解Spark的朋友会发现Flink的架构和Spark是非常类似的,在整个软件架构体系中,同样遵循着分层的架构设计理念,在降低系统耦合度的同时,也为上层用户构建Flink应用提供了丰富且友好的接口。
大数据流动
2019/12/12
1.9K0
Flink架构
Flink 是一个分布式系统,需要有效分配和管理计算资源才能执行流应用程序。它集成了所有常见的集群资源管理器,如Hadoop YARN,但也可以设置作为独立集群甚至库运行。
JavaEdge
2024/08/03
1590
Flink架构
Flink 基本工作原理
Flink是新的stream计算引擎,用java实现。既可以处理stream data也可以处理batch data,可以同时兼顾Spark以及Spark streaming的功能,与Spark不同的是,Flink本质上只有stream的概念,batch被认为是special stream。Flink在运行中主要有三个组件组成,JobClient,JobManager 和 TaskManager。主要工作原理如下图   
actionzhang
2022/11/30
7260
Flink 基本工作原理
Flink 架构学习总结
Flink是一个分布式系统,要求有效地分配和管理计算资源以执行流式应用程序。它集成了所有常见的集群资源管理器,如Hadoop YARN和Kubernetes,但也可以设置为作为standalone甚至库运行。
授客
2023/09/12
2730
Flink 架构学习总结
结合Spark讲一下Flink的runtime
Flink运行时主要角色有两个:JobManager和TaskManager,无论是standalone集群,on yarn都是要启动这两个角色。有点类似于MRv1的架构了,JobManager主要是负责接受客户端的job,调度job,协调checkpoint等。TaskManager执行具体的Task。TaskManager为了对资源进行隔离和增加允许的task数,引入了slot的概念,这个slot对资源的隔离仅仅是对内存进行隔离,策略是均分,比如taskmanager的管理内存是3GB,假如有三个slot,那么每个slot就仅仅有1GB内存可用。
Spark学习技巧
2018/12/18
9600
结合Spark讲一下Flink的runtime
EMR(弹性MapReduce)入门之流计算引擎Flink、Storm(九)
Flink通过实现Google Dataflow流式计算模型实现了高吞吐、低延迟、高性能兼具实时流式计算框架。同时Flink支持高度容错的状态管理,防止状态在计算过程中因为系统异常而出现丢失,Flink周期性地通过分布式快照技术Checkpoints实现状态的持久化维护,使得即使在系统停机或者异常的情况下都能计算出正确的结果。
小司机带你入门EMR
2020/02/12
1.8K0
EMR(弹性MapReduce)入门之流计算引擎Flink、Storm(九)
大数据知识总结(四):Flink的重点架构原理
Apache Flink 是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。
Lansonli
2025/05/24
1700
大数据知识总结(四):Flink的重点架构原理
大数据Flink进阶(十三):Flink 任务提交模式
Flink分布式计算框架可以基于多种模式部署,每种部署模式下提交任务都有相应的资源管理方式,例如:Flink可以基于Standalone部署模式、基于Yarn部署模式、基于Kubernetes部署模式运行任务,以上不同的集群部署模式下提交Flink任务会涉及申请资源、各角色交互过程,不同模式申请资源涉及到的角色对象大体相同,下面我们以Flink运行时架构流程为例来总体了解下Flink任务提交后涉及到对象交互流程,以便后续学习不同任务提交模式下任务提交流程。
Lansonli
2023/04/08
3.9K0
大数据Flink进阶(十三):Flink 任务提交模式
Flink面试通关手册「160题升级版」
主要是当Flink开启Checkpoint的时候,会往Source端插入一条barrir,然后这个barrir随着数据流向一直流动,当流入到一个算子的时候,这个算子就开始制作checkpoint,制作的是从barrir来到之前的时候当前算子的状态,将状态写入状态后端当中。然后将barrir往下流动,当流动到keyby 或者shuffle算子的时候,例如当一个算子的数据,依赖于多个流的时候,这个时候会有barrir对齐,也就是当所有的barrir都来到这个算子的时候进行制作checkpoint,依次进行流动,当流动到sink算子的时候,并且sink算子也制作完成checkpoint会向jobmanager 报告 checkpoint n 制作完成。
大数据真好玩
2021/07/07
2.8K0
相关推荐
2021年大数据Flink(九):Flink原理初探
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档