当前位置: 首页 > article >正文

Flink架构与集群部署(一)

Apache Flink架构Flink组件栈在Flink的整个软件架构体系中同样遵循这分层的架构设计理念在降低系统耦合度的同时也为上层用户构建Flink应用提供了丰富且友好的接口。上图是Flink基本组件栈从上图可以看出整个Flink的架构体系可以分为三层从下往上依次是物理部署层、Runtime 核心层、APILibraries层。物理部署层该层主要涉及Flink的部署模式目前Flink支持多种部署模式本地Local、集群Standalone/Yarn、KubernetesFlink能够通过该层支撑不同平台的部署用户可以根据需要来选择对应的部署模式目前在企业中使用最多的是基于Yarn进行部署也就是Flink On Yarn。Runtime核心层该层主要负责对上层不同接口提供基础服务也是Flink分布式计算框架的核心实现层支持分布式Stream作业的执行、JobGraph到ExecutionGraph的映射转换、任务调度等将DataStream和DataSet转成统一可执行的Task Oparator达到在流式引擎下同时处理批量计算和流式计算的目的。API Libraries层作为分布式计算框架Flink同时提供了支撑流计算和批计算接口未来批计算接口会被弃用在Flink1.15 版本中批计算接口已经标记为Legacy已过时后续版本建议使用Flink流计算接口基于此接口之上抽象出不同应用类型的组件库例如FlinkML 机器学习库、FlinkCEP 复杂事件处理库、Flink Gelly 图处理库、SQLTable 库。DataSet API 和DataStream API 两者都提供给用户丰富的数据处理高级API例如Map、FlatMap操作等同时也提供了比较底层的ProcessFunction API ,用户可以直接操作状态和时间等底层数据。这些API将在下个章节介绍。Flink运行时架构Flink整个系统主要由两个组件组成分别为JobManager和TaskManagerFlink架构也遵循Master-Slave架构设计原则JobManager为Master节点TaskManager为WorkerSlave节点。所有组件之间的通信都是借助于Akka Framework包括任务的状态以及Checkpoint触发等信息。Flink运行时架构如下下面分别介绍下架构中涉及到的角色作用。Flink Clients客户端Flink客户端负责将任务提交到集群与JobManager构建Akka连接然后将任务提交到JobManager通过和JobManager之间进行交互获取任务执行状态。Flink客户端Clients不是Flink程序运行时的一部分作用是向JobManager准备和发送dataflow之后客户端可以断开detached mode连接或者保持连接(attached mode)。客户端提交任务可以采用CLI方式或者通过使用Flink WebUI提交也可以在应用程序中指定JobManager的RPC网络端口构建ExecutionEnvironment提交Flink应用。JobManagerJobManager负责整个Flink集群任务的调度以及资源的管理从客户端中获取提交的应用然后根据集群中TaskManager上TaskSlot的使用情况为提交的应用分配相应的TaskSlots资源并命令TaskManger启动从客户端中获取的应用。JobManager相当于整个集群的Master节点Flink HA 集群中可以有多个JobManager但整个集群中有且仅有一个活跃的JobManager其他的都是StandBy。JobManager和TaskManager之间通过Actor System进行通信获取任务执行的情况并通过Actor System将应用的任务执行情况发送给客户端。同时在任务执行过程中Flink JobManager会触发Checkpoints操作每个TaskManager节点收到Checkpoint触发指令后完成Checkpoint操作所有的Checkpoint协调过程都是在Flink JobManager中完成。当任务完成后Flink会将任务执行的信息反馈给客户端并且释放掉TaskManager中的资源以供下一次提交任务使用。JobManager由三个不同的组件组成ResourceManager:这里说的ResourceManager不是Yarn资源管理中的ResourceManager而是Flink中的ResourceManager其主要负责Flink集群资源分配、管理和回收。在Flink中这里说的资源主要是TaskManager节点上的Task Slot计算资源Flink中每个提交的任务最终会转换成task每个task需要发送到TaskManager 上的slot中执行slot是资源调度最小的单位Flink为不同的环境和资源提供者例如Yarn/Kubernetes和Standalone实现了对应的ResourceManager这些ResourceManager负责申请启动TaskManager获取Slot资源。在Standalone集群中集群启动会同时启动TaskManager不支持提交任务时启动TaskManager没有Per-Job任务提交模式ResourceManager只能分配可用TaskManager的slots而不支持自行启动新的TaskManager而基于其他资源调度框架执行任务时当ResourceManager管理对应的TaskManager没有足够的slot会申请启动新的TaskManager进程。DispatcherDispatcher提供了一个REST接口用来提交Flink应用程序执行例如CLI客户端或Flink Web UI提交的任务最终都会发送至Dispatcher组件由Dispatcher组件对JobGraph进行分发和执行并为每个提交的作业启动一个新的 JobMaster它还运行 Flink WebUI 用来提供作业执行信息。JobMasterJobMaster负责管理整个任务的生命周期负责将Dispatcher提交上来的JobGraph转换成ExecutionGraph执行图结构通过内部调度程序对ExecutionGraph执行图进行调度和执行最终向TaskManager中提交和运行Task实例同时监控各个Task的运行状况直到整个作业中所有的Task都执行完毕。JobManager和ResourceManager组件一样JobManager组件本身也是RPC服务具备通信能力可以与ResourceManager进行RPC通信申请任务的计算资源资源申请到位后就会将对应Task任务发送到TaskManager上执行当Flink Task任务执行完毕后JobMaster服务会关闭同时释放任务占用的计算资源。所以JobMaster与对应的Flink job是一一对应的。TaskManagerTaskManager负责向整个集群提供Slot计算资源同时管理了JobMaster提交的Task任务。TaskManager会提供JobManager从ResourceManager中申请和分配的Slot计算资源JobMaster最终会根据分配到的Slot计算资源将Task提交到TaskManager上运行。另外TaskManager还可缓存数据TaskManager之间可以进行DataStream数据的交换。一个Flink集群中至少有一个TaskManager在TaskManager中资源调度的最小单位是 task slot ,一个TaskManger中的task Slot个数决定了当前TaskManger最高支持的并发task个数一个task Slot中可以执行多个算子。可以看出Flink的任务运行其实是采用多线程的方式这和MapReduce多JVM进程的方式有很大的区别Fink能够极大提高CPU使用效率在多个任务和Task之间通过TaskSlot方式共享系统资源每个TaskManager中通过管理多个TaskSlot资源池进行对资源进行有效管理。

相关文章:

Flink架构与集群部署(一)

Apache Flink架构Flink组件栈在Flink的整个软件架构体系中,同样遵循这分层的架构设计理念,在降低系统耦合度的同时,也为上层用户构建Flink应用提供了丰富且友好的接口。上图是Flink基本组件栈,从上图可以看出整个Flink的架构体系可…...

【Go i18n】TOML语言包

一、VS Code 必备的 TOML 插件1. Even Better TOML(核心高亮与语法检查 👑)搜索关键字:Even Better TOML为什么要装:它是目前全网公认第一的 TOML 插件。装上它之后,你的 .toml 文件不仅会变得色彩斑斓&…...

【金蝶云星空】出纳做账-付款退款单使用场景

学习目标学习本内容后,您将掌握如何使用付款退款单。业务场景付款退款单 付款退款单与付款业务对应,处理付款业务所发生的退款,包括采购业务付款的退款或者其他业务付款的退款。支持手工新增或者关联应付系统负数的应付单、其他应付单生成付…...

Apache Flink 快速入门

Flink开发环境准备学习一门新的编程语言时,往往会从"hello world"程序开始,而接触一套新的大数据计算框架时,则一般会从WordCount案例入手,下面以大数据中最经典入门案例WordCount为例,来编写Flink代码&…...

如何用免费纹理打包器优化游戏性能:5个实战技巧提升加载速度

如何用免费纹理打包器优化游戏性能:5个实战技巧提升加载速度 【免费下载链接】free-tex-packer Free texture packer 项目地址: https://gitcode.com/gh_mirrors/fr/free-tex-packer Free Texture Packer 是一款完全开源的精灵表生成工具,专门为游…...

基于 ComfyUI 本地部署 的「图像 + 音频 → 口型匹配 + 自动运镜」MV 全流程指南

基于 ComfyUI 本地部署 的「图像 + 音频 → 口型匹配 + 自动运镜」MV 全流程指南 适用人群:有一定电脑(Windows / macOS / Linux)操作经验、显卡(GPU)支持 CUDA/ROCm、能自行安装 Python 第三方库的技术爱好者。 目标:输入一张人像图片 + 一段伴奏/人声音频,自动生…...

基于OpenHarmony的智慧农业控制系统-硬件部分【1】

1.整体设备2.硬件清单:一、主控单元(边缘网关)硬件名称型号/规格数量备注小熊派开发板BearPi-HM Nano(搭载 Hi3861 芯片,支持 OpenHarmony LiteOS)1块核心控制单元,集成 Wi-Fi,负责数…...

手把手教你从零搭建 MCP Server:AI 连接万物的保姆级实战教程

为什么要学 MCP? 说实话,最近半年 AI 开发圈最火的协议就是 MCP(Model Context Protocol)了。你可能已经用上了各种 AI 助手,但有没有想过:这些 AI 怎么连接你的数据库?怎么读你的本地文件&…...

萨科微宋仕强“华强北山寨手机”研究

萨科微宋仕强“华强北山寨手机”研究(十六),手机的灰色产业链。华强北每个手机柜台背后都有灰色供应链支撑。如香港手机比华强北便宜,就通过各种渠道从香港走私过来。沙头角的中英街两边分属于香港和深圳,香港一侧的走…...

Vue大屏自适应解决方案:如何应对多分辨率设备下的数据可视化挑战

Vue大屏自适应解决方案:如何应对多分辨率设备下的数据可视化挑战 【免费下载链接】v-scale-screen Vue large screen adaptive component vue大屏自适应组件 项目地址: https://gitcode.com/gh_mirrors/vs/v-scale-screen 在数字化转型浪潮中,企业…...

毕业论文神器!2026年好用AI论文平台榜单,高质初稿轻松写

2026 年实测 10 款主流 AI 论文工具,千笔AI以全流程覆盖 语义级降重 免费查重领跑综合榜;ThouPen 稳坐留学生毕业全流程工具头把交椅;免费工具中DeepSeek Scholar、豆包学术版表现亮眼,30 分钟即可生成万字高质量初稿&#xff0…...

良心盘点!2026AI写作辅助软件榜单(覆盖 99% 毕业论文需求)

本文精选13 款2026 年实测 AI 论文工具,按全流程全能型、垂直领域专精型、润色降重专家、文献管理助手四大类别排序,覆盖从选题到定稿全链路,适配本科 / 硕博 / 期刊全场景,附选型速查表与避坑指南,帮你快速找到最佳拍…...

毕业论文难写?2026年AI论文平台排行榜权威发布,轻松定稿不是梦!

写论文效率低、熬夜赶稿、查重不过关?别慌!2026 年最新 AI 论文写作软件排行榜来了,覆盖选题、大纲、初稿、润色、降重、格式、文献引用全流程,帮你精准匹配最适合的学术助手,彻底告别论文内耗!&#x1f3c…...

传统开发VS低代码开发,谁更胜一筹?

低代码开发,让企业应用搭建像搭积木一样简单 在当今数字化时代,企业对于应用程序的需求日益增长。然而,传统的软件开发方式往往面临着开发周期长、成本高、技术门槛高等问题,这使得许多企业在数字化转型的道路上举步维艰。而低代…...

3PEAK思瑞浦 TP321-DF0R DFN1X1-4 运算放大器

特性 通用型,低成本: 增益带宽积:1MHz 低静态电流:45A/放大器 偏移电压:最大5.0毫伏 偏移电压温度漂移:2uV/C 输入偏置电流:10pA 共模抑制比/电源抑制比:90dB 单位增益稳定 轨到轨输入和输出 过驱动输入无相位反转 供电电压范围: TP321-DFOR: 2.1V 至 5.5V 其他部分…...

抖音下载神器:免费批量下载抖音视频、图集、音乐和直播回放完整指南

抖音下载神器:免费批量下载抖音视频、图集、音乐和直播回放完整指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser f…...

CUDA为什么能统治AI世界?NVIDIA真正可怕的并不是GPU

前言很多人第一次接触AI行业时,都会听到一个词:CUDA。而且你会发现一个非常奇怪的现象:很多AI框架、深度学习项目、GPU训练环境,几乎都默认要求:NVIDIA显卡CUDA环境甚至很多时候:没有CUDA,AI项目…...

快速开发AI客服原型时如何利用Taotoken分钟级接入多模型

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 快速开发AI客服原型时如何利用Taotoken分钟级接入多模型 在探索和构建AI客服原型时,开发者常常面临一个核心矛盾&#…...

怎么区分储能PACK线源头工厂和中间商?

在储能 PACK 自动化产线行业深耕多年,我见过不少新能源企业踩了中间商的坑。有的客户花了高于市场价两成的预算,拿到的却是套用通用模板的产线,防静电、防爆设计不到位,投产没多久就频繁故障;还有的后期出问题&#xf…...

Python爬虫中如何正确配置住宅IP代理?新手避坑指南

很多人买完住宅IP,配置半天还是报错、被封。本文手把手教你用Python正确接入住宅代理,附代码和常见问题解决。一、为什么你的代理配置总失败?常见的几种错误:协议用错:服务商给的SOCKS5,你却按HTTP方式配认…...

蜂窝物联网设计的全能选手:NRF9151-LACA-R7开发全攻略

前言在蜂窝物联网技术飞速发展的今天,设备的小型化、低功耗和全球化部署已成为不可逆转的趋势。Nordic Semiconductor推出的nRF9151系统级封装(SiP)解决方案,正是响应这一趋势的旗舰级产品。作为nRF91系列的最新一代成员&#xff…...

Tokenizer与Embedding

Transformers 系列文章目录 第一章 Transformers 简介 第二章 Transformers 模型推理; 第三章 Tokenizer 与 Embedding 文章目录Transformers 系列文章目录前言Tokenizer与Embedding一、Tokenizer(分词器)和Embedding(词嵌入&a…...

书匠策AI:那个让你论文查重从“红色地狱“直接变“绿色天堂“的神器

各位正在跟论文死磕的同学们,先别划走。 今天咱们不聊怎么写开题报告,不聊怎么搭框架,咱们聊一个所有人写完初稿后都会遭遇的终极BOSS——查重。 你有没有经历过这种崩溃:熬夜写了一万字,信心满满提交查重&#xff0…...

微服务架构下的旺店通与畅捷通T+系统集成

旺店通与畅捷通T系统集成方案轻易云数据集成平台为企业提供高效、稳定的系统对接解决方案,实现旺店通企业奇门与畅捷通T系统的无缝数据流转。该方案充分发挥轻易云平台的智能化数据处理能力,确保业务数据在跨系统传输过程中的准确性和时效性。系统简介旺…...

SR全光谱反射式膜厚仪

作者:李志松Pioneer 翟天保Steven 田雨阳 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处注:本文所讲设备由李志松教授团队研发,属于商业产品矩阵内容,商业技术合…...

Unity+C#开发万人MMO服务器的实战架构与同步优化

1. 这不是“写个服务器”那么简单:先撕开“万人在线”的真实含义很多人看到“UnityC#开发万人MMO服务器”这个标题,第一反应是:“哦,用Unity做客户端,C#写个后端,Socket连一连,再加个数据库&…...

Unity+C#开发MMO服务端的务实架构与万人连接实战

1. 先泼一盆冷水:所谓“万人同时在线”的真实含义与常见误解 很多人看到“UnityC#开发万人MMO服务器”这个标题,第一反应是:哇,这得用多牛的分布式架构?是不是要上Kubernetes集群、分库分表、消息中间件全配齐&#xf…...

【Elasticsearch从入门到精通】第10篇:Elasticsearch REST API最佳实践——Content-Type、模糊性与访问控制

上一篇【第09篇】Elasticsearch API规范详解——多索引、日期数学与通用选项 下一篇【第11篇】Elasticsearch索引API详解——索引创建、删除与别名管理(明日更新,敬请期待) 摘要 掌握Elasticsearch REST API的使用规范不仅能避免常见错误&am…...

【Elasticsearch从入门到精通】第08篇:Elasticsearch集群扩展与运维——水平扩展与节点管理

上一篇【第07篇】Elasticsearch集群安全配置——TLS/SSL与密钥库管理 下一篇【第09篇】Elasticsearch API规范详解——多索引、日期数学与通用选项 摘要 Elasticsearch天生为分布式设计,其高扩展性和高可用性是核心优势。但在实际生产中,如何合理规划节…...

Unity游戏运行时自动翻译引擎原理与实战配置

1. 为什么Unity游戏翻译不能只靠“改文本”——XUnity.AutoTranslator不是插件,而是运行时翻译引擎 你有没有试过打开一个Unity游戏的Assets文件夹,用文本编辑器搜索中文字符串,然后手动替换成英文?我试过三次,每次都在…...