Apache Flink 运行时架构

Flink 运行时架构
  • Flink整个系统由两个主要部分组成JobManager和TaskManager,Flink架构也遵循Master-Slave架构设计原则,JobManager为Master节点,TaskManager为worker(Slave)节点,所有组件之间通讯都是借助Akka Framework,包括任务的状态以及Checkpoint触发等信息。
  • Flink运行时候架构如下:

在这里插入图片描述

Flink Client 客户端
  • Flink 客户端负责将任务提交到集群,与JobManager之间构建Akka连接,然后将任务提交到JobManager,通过和JobManager之间进行交互获取任务执行状态。
  • Flink 客户端Cliens不是Flink程序运行的一部分,作用是向JobManager准备和发送dataFlow,之后客户端可以断开连接(detached mode)或者保持连接(attached mode)
JobManager
  • JobManager 负责整个集群任务的调度以及资源的管理,从客户端中获取提交的应用,然后根据集群中TaskManager上TaskSlot的使用情况,为提交的应用分配相应的TaskSlots资源并命令TaskManager启动从客户端中获取的应用。
  • JobManager 相当于整个集群的Master节点,Flink HA集群中可以有多个JobManager,但是只能有一个活跃的JobManager。
  • JobManager与TaskManager之间通过Actor System进行通讯,获取任务执行情况并且通过Actor System将应用的任务执行情况发送给客户端
  • CheckPoint机制也是Flink JobManager发出的指令给TaskManager,TaskManger收到CheckPoint指令后完成CheckoutPoint操作
JobManager 中的三个不同组件
Resource Manager
  • 负责Flink集群资源分配,管理,回收。Flink中的资源是TaskManager节点上的Task Slot计算资源,Flink提交的任务最重都会转成Tast,每个Tast 都需要发送到TaskManager上的Slot中执行。
  • 当ResourceManager 管理对应的TaskManager没有足够的slot,会申请启动新的Taskmanager进程
JobMaster
  • JobMaster 负责管理整个任务的生命周期,负责将Dispatcher提交上来的JobGraph转换成ExecutionGraph结构。通过内部调度对ExecutionGraph 执行图进行调度和执行。最终向TaskManager 中提交和运行Task实例,同时会监控各个Task的运行状况,直到整个作业中所有Task都执行完毕。
  • JobMaster和Resource Manager 组件一样,JobManager组件本身也是RPC服务,具备通信能力,可以与ResourceManager进行RPC通信申请任务计算资源,之后将对应Task任务发送到TaskManager执行,FlinkTask执行完后,JobMaster服务关闭。所以JobMaster 与对应的Flink job是一一对应的。
Dispatcher
  • Dispatcher提供了Rest接口,用来提交Flink应用程序执行,例如CLI客户端或者Flink Web UI提交任务最重都会发送到Dispatcher组件,由Dispatcher组件对JobGraph进行风发和执行,并为每个提交作业启动一个新的JobMaster。还运行Flink WebUI 用来提供作业执行信息。
TaskManager
  • Task Manager 负责向整个集群提供Slot计算资源,同时管理JobMaster提交的Task任务。

  • TaskManager会提供JobManager从ResourceManager中申请和分配的Slot计算资源,JobMaster根据分配到的Slot计算资源将Task提交到TaskManager上运行。同时TaskManager还可以缓存数据,TaskManager之间可以进行DataStream数据交换。

  • 一个FLink集群中至少有一个TaskManager,在TaskManager中资源调度的最小单位是task slot,一个TaskManager中task Slot的数量决定了当前Taskmanager最高支持的兵法task个数,一个TaskSlot中可以执行多个算子。

  • 因此Flink的任务是采用多线程,和MapReuce多JVM进程方式有很大区别,Flink这种模式能极大提高CPU的利用率,在多个任务和Task之间通过TaskSlot方式共享系统资源,每个TaskManager中通过管理多个TaskSlot资源池进行有效管理。

Flink 任务提交总流程如下

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

项目进度管理(5-1)常见的缓冲区监控方法

缓冲区监控是一种项目管理技术,主要用于关键链项目管理系统(Critical Chain Project Management, CCPM)中。它的核心理念是识别和管理项目中的不确定性和依赖性,以提高项目完成的可靠性。 缓冲区监控方法主要是针对项目进度计划执…

【ChatGPT 消费者偏好】第二弹:ChatGPT在日常生活中的使用—推文分享—2024-07-10

今天的推文主题还是【ChatGPT & 消费者偏好】 第一篇:哪些动机因素和技术特征的组合能够导致ChatGPT用户中高和低的持续使用意图。第二篇:用户对ChatGPT的互动性、性能期望、努力期望以及社会影响如何影响他们继续使用这些大型语言模型的意向&#x…

OpenCV中使用Canny算法在图像中查找边缘

操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:Visual Studio Code编程语言:C11 算法描述 Canny算法是一种广泛应用于计算机视觉和图像处理领域中的边缘检测算法。它由John F. Canny在1986年提出,旨在寻找给定噪声条件下的最佳边…

Elasticsearch:使用 Filebeat 从 Node.js Web 应用程序提取日志

本指南演示了如何从 Node.js Web 应用程序中提取日志并将其安全地传送到 Elasticsearch Service 部署中。你将设置 Filebeat 来监控具有标准 Elastic Common Schema (ECS) 格式字段的 JSON 结构日志文件,然后在向 Node.js 服务器发出请求时,你将在 Kiban…

three-tile: 1. 第一个three-tile程序

上篇介绍了:three-tile: 一个开源的轻量级三维瓦片库-CSDN博客 three-tile 是一个开源的轻量级三维瓦片库,它基于threejs使用typescript开发,提供一个三维地形模型,能轻松给你的应用增加三维瓦片地图。 项目地址&…

Spark-RDD和共享变量

概览 每个Spark应用程序都由一个driver program 组成,该驱动程序运行我们编写的main函数,并在集群上执行各种 并行 操作。Spark提供的主要抽象是一个 弹性分布式数据集(RDD),它是一个跨集群节点分区的元素集合&#x…

maven7——(重要,构建项目)maven项目构建(命令)

Maven的常用命令管理项目的生命周期 clean命令 清除编译产生的target文件夹内容,可以配合相应命令在cmd中使用,如mvn clean package, mvn clean test D:\工作\公司培训-4班\day20\day20\untitled1>mvn clean compile命令 该命令可以…

Nginx: Rewrite功能配置/Nginx反向代理/Nginx的安全控制SSL

Rewrite功能配置 Rewrite是Nginx服务器提供的一个重要基本功能,是Web服务器产品中几乎必备的功能。主要的作用是用来实现URL的重写。www.jd.com 注意:Nginx服务器的Rewrite功能的实现依赖于PCRE的支持,因此在编译安装Nginx服务器之前,需要安…

[ICS] Inferno(地狱) ETH/IP未授权访问,远程控制工控设备利用工具

项目地址:https://github.com/MartinxMax/Inferno Inferno $ ./Install.sh $ python Inferno.py -h 模拟服务端 $ sudo python3 -m pip install --upgrade cpppo $ $ python -m cpppo.server.enip SCADAINT[1000] ADMININT[2] -v 创建一个EtherNet/IP设备 扫描设备 $ pyth…

【网络安全】Oracle:SSRF获取元数据

未经许可,不得转载。 文章目录 前言正文漏洞利用 前言 Acme 是一家广受欢迎的播客托管公司,拥有庞大的客户群体。与许多大型运营公司一样,Acme 采用了Apiary的服务,使用户能够安全高效地管理他们的播客。 Apiary 于2017年初被Or…

【Django项目】基于Python+Django+MySQL的音乐网站系统项目

功能介绍 首页:歌曲分类、歌曲搜索、热门歌曲、热门下载、新歌推荐 歌曲排行:歌曲分类、分页功能 用户板块:用户登陆/注册、播放历史 歌曲详情:歌曲播放、当前播放列表、歌曲点评、歌曲播放插件、下载歌曲 系统后台:歌…

如何将Docker镜像源更改为阿里云的镜像加速地址

在使用Docker时,尤其是在国内环境下,由于网络原因,从Docker Hub拉取镜像可能会遇到速度较慢的问题。为了提高拉取速度,我们可以将Docker的镜像源更改为阿里云等国内镜像源。下面详细介绍如何获取并配置阿里云的Docker镜像加速地址…

【中项第三版】系统集成项目管理工程师 | 第 4 章 信息系统架构⑤ | 4.8 - 4.9

前言 第4章对应的内容选择题和案例分析都会进行考查,这一章节属于技术相关的内容,学习要以教材为准。本章分值预计在4-5分。 目录 4.8 云原生架构 4.8.1 发展概述 4.8.2 架构定义 4.8.3 基本原则 4.8.4 常用架构模式 4.8.5 云原生案例 4.9 本章…

docker(六)--创建镜像

六、创建镜像 1.创建镜像两种方式 方式1: 更新镜像 docker commit 方式2:构建镜像 docker build 2.更新镜像 1)用法 docker commit -m“描述信息” -a作者 容器id或者容器名 镜像名:tag 2)步骤 ①根据镜像运行容器 ②进入容…

栈和队列题目详解

前言: 在前面我们学习了栈和队列,栈的特性是后进先出,队列的特性是先进先出,当我们了解了这些之后,我们就可以用到栈和队列的特性来简单的做一些题目了。 1. 有效的括号 有效的括号:. - 力扣&#xff08…

YOLOv10改进 | Conv篇 | 利用FasterBlock二次创新C2f提出一种全新的结构(全网独家首发,参数量下降70W)

一、本文介绍 本文给大家带来的改进机制是利用FasterNet的FasterBlock改进特征提取网络,将其用来改进ResNet网络,其旨在提高计算速度而不牺牲准确性,特别是在视觉任务中。它通过一种称为部分卷积(PConv)的新技术来减少…

火柴棒图python绘画

使用Python绘制二项分布的概率质量函数(PMF) 在这篇博客中,我们将探讨如何使用Python中的scipy库和matplotlib库来绘制二项分布的概率质量函数(PMF)。二项分布是统计学中常见的离散概率分布,描述了在固定次…

夏日智启:我的Datawhale AI夏令营探索之旅

前言 最近几年,AI(人工智能)的发展呈现出了前所未有的迅猛势头,其影响力和应用范围不断扩大,深刻地改变着我们的生活、工作和社会结构。尤其是AI大模型技术,国内外可谓是“百模大战”,百舸争流…

ESP32网络开发:1.创建一个基于TCP网络协议的网站

一、TCP协议的介绍 TCP(传输控制协议,Transmission Control Protocol)是互联网协议套件中的一种核心协议,主要用于在网络中的计算机之间可靠地传输数据。TCP协议位于OSI模型(开放系统互联模型)的传输层&…

虚拟机内安装vue-dev-tools

前言 项目开发调试都需要在Citrix在虚拟机环境下,Citrix内连接不到外网,在这边文章,我将介绍自己在Citrix环境内安装 vue-dev-tools的经验 环境 vue 步骤 1. 下载.crx文件 百度网盘里的 .crx文件的 下载链接 2. 加载.crx文件 打开浏览…