Flink 运行时架构

Flink 运行时的组件

在这里插入图片描述

  • 作业管理器(JobManager)
  • 资源管理器(ResourceManager)
  • 任务管理器(TaskManager)
  • 分发器(Dispatch)

JobManager

  • 控制一个应用程序执行的主进程,也就是说,每个应用程序都会被一个不同的 JobManager 所控制执行;
  • JobManager 会先接收到要执行的应用程序,这个应用程序,这个应用程序包括作业图(JobGraph)、逻辑数据流图(logical dataflow graph)和打包了所有类、库和其他资源的JAR包;
  • JobManager 会把 JobGraph 转换成一个物理层面的数据流图,这个图叫做执行图(ExecutionGraph),包含了所有可以并发执行的任务;
  • JobManager 会向 ResourceManager 请求执行任务必要的资源,也就是 TaskManager 上的 slot 。一旦它获取到了足够的资源,就会将执行图分发到真正运行它们的 TaskManager 上。而在运行过程中,JobManager 会负责所有需要中央协调的操作,比如所 checkpoint 的协调;

ResourceManager

  • 主要负责管理 TaskManager 和 slot;
  • Flink 为不同环境和资源管理工具提供了不同的 ResourceManager,比如Yarn、Mesos、K8s,以及 standalone部署;
  • 当 JobManager 申请 slot 资源时,ResourceManager 会将有空闲 slot 的 TaskManager 分配给 JobManager。如果 ResourceManager 没有足够的 slot 来满足 JobManager 的请求,它还可以向资源提供平台发起会话,以提供启动 TaskManager 进程的容器;

TaskManager

  • Flink 中的工作进程。通常在 Flink 中会有多个 TaskManager 运行,每一个 TaskManager 都包含一定数量的 slot 。slot 的数量限制了 TaskManager 能够执行的任务数量(并行度);
  • 启动之后,TaskManager 会向 ResourceManager 注册它的 slot ;收到 ResourceManager 的指令后,TaskManager 就会将一个或者多个 slot 提供给 JobManager 调用。JobManager 就可以向 slot 分配任务来执行了;
  • 在执行过程中,一个 TaskManager 可以跟其他运行同一应用程序的 TaskManager 交换数据;

Dispatcher

  • 可以跨作业运行,它为应用提交提供了 REST 接口;
  • 当一个应用被提交时,Dispatcher 就会启动并将应用移交给一个 JobManager;
  • Dispatcher 也会启动一个 Web UI,用来方便地展示和监控作业执行的信息;
  • Dispatcher 在架构中可能并不是必需的,这取决于应用提交的方式;

Flink 任务提交流程

在这里插入图片描述

  1. 当程序执行 execute() 方法时,Client 会将程序编译成一个 DAG(有向无环图),这个图被称为 JobGraph ,JobGraph 描述了程序的数据流和操作;
  2. Dispatcher 将 JobGraph 提交给 JobManager;
  3. JobManager 接收到 JobGraph 后会将其解析,并创建一个 ExecutionGraph,ExecutionGraph 描述了如何在集群中并行执行 JobGraph 中定义的数据流;
  4. JobManager 根据 ExecutionGraph 的需求向 ResourceManager 请求资源;
  5. 一旦资源被分配,JobManager 会将作业分解成一系列的 Task ,然后将这些 Task 分配给集群中 TaskManager ,每个 TaskManager 执行一个或多个 Task;
  6. TaskManager 接收到 Task 后会在本地执行它们;
  7. TaskManager 会定期保存状态快照,并向 JobManager 报告任务的进度和状态;
  8. 当所有 Task 都成功执行完毕,JobManager 会标记作业为完成,并且释放所有分配的资源;

以上是从一个较为高级的视角,来看应用中各组件的交互协作。如果部署的集群环境不同,其中一些步骤可以省略,或是有些组件会运行在同一个 JVM 进程中。

下面以具体部署到 Yarn 上为例:
在这里插入图片描述

  1. Flink 提交任务后,Client 向 HDFS 上传 Flink 的 Jar 包和配置;
  2. Client 向 ResourceManager 提交任务,ResourceManager 分配 Container 资源并通知对应的 NodeManager 启动 ApplicationMaster,ApplicationMaster 启动后加载 Flink 的 Jar 包和配置构建环境,然后启动 JobManager;
  3. ApplicationMaster 向 ResouceManager 申请资源启动 TaskManager;
  4. ResourceManager 分配 Container 资源后,由 ApplicationMaster 通知资源所在节点的 NodeManager 启动 TaskManager;
  5. TaskManager 加载 Flink 的 Jar包和配置构建环境并启动 TaskManager;
  6. TaskManager 启动后向 JobManager 发送心跳包,并等待 JobManager 向其分配任务;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/38918.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LiveNVR监控流媒体Onvif/RTSP用户手册-概览:CPU使用、存储使用、带宽使用、负载、内存使用、通道统计

LiveNVR监控流媒体Onvif/RTSP用户手册-概览:CPU使用、存储使用、带宽使用、负载、内存使用、通道统计 1、概览1.1、通道统计1.2、负载1.3、CPU使用1.4、存储使用1.5、带宽使用1.6、内存使用 2、RTSP/HLS/FLV/RTMP拉流Onvif流媒体服务 1、概览 1.1、通道统计 显示可用通道&…

Lipschitz 连续,绝对连续

1. Lipschitz 连续 经常听到这个名词, Lipschitz 连续比普通连续更强,不仅要求函数连续,还要求函数的梯度小于一个正实数。 在单变量实数函数上的定义可以是: 对于定义域内任意两个 x 1 x_1 x1​ and x 2 x_2 x2​, 存在一个…

云计算与生成式AI的技术盛宴!亚马逊云科技深圳 Community Day 社区活动流程抢先知道!

小李哥最近要给大家分享7月7日在深圳的即将举办的亚马逊云科技生成式AI社区活动Community Day ,干货很多内容非常硬核,不仅有技术分享学习前沿AI技术,大家在现场还可以动手实践沉浸式体验大模型,另外参与现场活动还可以领取诸多精…

顺序表(C语言详细版)

1. 线性表 线性表(lina list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串...... 线性表在逻辑上是线性结构,也就是说连续的一条直线。但是在物理结构上并…

一文汇总全球热门新闻API

新闻API通过提供快速、准确和全面的新闻内容,已经成为现代社会不可或缺的一部分,对人们的生活、工作环境和科技发展产生了深远的影响。新闻API使人们能够快速获取来自世界各地的实时新闻和信息,提高了信息的可访问性。通过新闻API&#xff0c…

C++算法学习心得八.动态规划算法(6)

1.最长递增子序列(300题) 题目描述: 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如&…

Redis分布式集群部署

目录 一. 原理简述 二. 集群配置​​​​​​​ 2.1 环境准备 2.2 编译安装一个redis 2.3 创建集群 2.4 写入数据测试 实验一: 实验二: 实验三: 实验四: 添加节点 自动分配槽位 提升节点为master: 实验…

关于电商平台分类||电商平台商品分类接口|电商平台商品数据

电商平台 做电商,则要有电商平台,一个为 企业 或 个人 提供网上交易洽谈的平台。. 企业电子商务平台是建立在 Internet 网上进行商务活动的虚拟网络空间和保障商务顺利运营的管理环境;是协调、整合 信息流 、货物流、 资金流 有序、关联、高效…

会员信息一键同步!微盟与客如云联手打造智能服务新体验!

客户介绍 某房地产开发有限公司,自成立以来一直深耕于房地产行业,凭借卓越的开发实力和前瞻性的市场眼光,成为了业界备受瞩目的企业。多年来,该公司始终坚持“品质至上,客户为先”的经营理念,致力于为客户…

掌握React与TypeScript:从零开始绘制中国地图

最近我需要使用reactts绘制一个界面,里面需要以中国地图的形式展示区块链从2019-2024年这五年的备案以及注销情况,所以研究了一下这方面的工作,初步有了一些成果,所以现在做一些分享,希望对大家有帮助! 在这…

手把手搞定报名亚马逊科技认证

引言 亚马逊云科技认证考试为我们这些技术从业者提供了提升专业技能的机会。无论选择线上还是线下考试,每种方式都有其独特的优势和挑战。选择合适的考试方式将帮助我们更好地展示自己的技术水平。以下是我对不同考试方式的优缺点介绍,以及各科目的考试…

【pytorch12】什么是梯度

说明 导数偏微分梯度 梯度:是一个向量,向量的每一个轴是每一个方向上的偏微分 梯度是有方向也有大小,梯度的方向代表函数在当前点的一个增长的方向,然后这个向量的长度代表了这个点增长的速率 蓝色代表比较小的值,红色…

七月论文审稿GPT第5版:拿我司七月的早期paper-7方面review数据集微调LLama 3

前言 llama 3出来后,为了通过paper-review的数据集微调3,有以下各种方式 不用任何框架 工具 技术,直接微调原生的llama 3,毕竟也有8k长度了 效果不期望有多高,纯作为baseline通过PI,把llama 3的8K长度扩展…

MySQL-行级锁(行锁、间隙锁、临键锁)

文章目录 1、介绍2、查看意向锁及行锁的加锁情况3、行锁的演示3.1、普通的select语句,执行时,不会加锁3.2、select * from stu where id 1 lock in share mode;3.3、共享锁与共享锁之间兼容。3.4、共享锁与排他锁之间互斥。3.5、排它锁与排他锁之间互斥3…

每日一题---OJ题:分隔链表

片头 嗨!小伙伴们,大家好!今天我们一起来看看这道题----分隔链表 emmmm,这道题,看描述应该不算太难,我们一起来画一画图呗! 题目读懂了,那么如何破解这道题呢? 思路&…

短视频世界对我温柔以待:成都柏煜文化传媒有限公司

短视频世界对我温柔以待 在繁忙的都市生活中,每个人都在为生活奔波,为梦想努力。而在这个快节奏的时代里,短视频如同一股清流,以其独特的魅力,为我带来了片刻的宁静与温柔。它像是一个无声的朋友,在我疲惫…

(必看图文)Hadoop集群安装及MapReduce应用(手把手详解版)

前言 随着大数据时代的到来,处理和分析海量数据已成为企业和科研机构不可或缺的能力。Hadoop,作为开源的分布式计算平台,因其强大的数据处理能力和良好的可扩展性,成为大数据处理领域的佼佼者。本图文教程旨在帮助读者理解Hadoop集…

Mysql面试合集

概念 是一个开源的关系型数据库。 数据库事务及其特性 事务:是一系列的数据库操作,是数据库应用的基本逻辑单位。 事务特性: (1)原子性:即不可分割性,事务要么全部被执行,要么就…

python 笔试面试八股(自用版~)

1 解释型和编译型语言的区别 解释是翻译一句执行一句,更灵活,eg:python; 解释成机器能理解的指令,而不是二进制码 编译是整个源程序编译成机器可以直接执行的二进制可运行的程序,再运行这个程序 比如c 2 简述下 Pyth…

运维锅总详解RocketMQ

本文尝试从Apache RocketMQ的简介、主要组件及其作用、3种部署模式、Controller集群模式工作流程、最佳实践等方面对其进行详细分析。希望对您有所帮助! 一、Apache RocketMQ 简介 Apache RocketMQ 是一个开源的分布式消息中间件,由阿里巴巴集团开发并…