Flink最全文档

Flink架构:

分布式系统Flink,需要有效分配和管理计算资源才能执行流应用程序。它集成了所有常见的集群资源管理器,例如Hadoop Yarn,Apache Mesos,Kubernetes,但是也可以设置作为独立集群甚至库来运行。

分离模式:客户端断开连接。

附加模式:保持连接接受进程报告。

Job Manager:决策者,决定何时调度下一个task,对完成的task和执行失败作出反应,协调checkpoint,并且协调从失败中恢复的问题。(Flink中的Job Manager就类似于Spark中的Master)

1.ResourceManager:

为不同的资源调度者实现了ResourceManager(比如Yarn,Mesos,Kubernetes),资源管理者。

2.Dispatcher:提供了一个REST接口,用来提交Flink应用程序执行。为每个提交的作业启动一个JobMaster。

3.JobMaster:一个JobMaster单独管理一个JobGraph的执行,Flink集群中会有多个作业同时运行,每一个作业对应一个JobMaster。

一个集群中至少会有一个JobManager,高可用中会有多个JobManager,其中一个是Leader,其他的是StandBy,工作的JobManager如果挂掉了,立马就补上一个StandBy的JobManager。(就像是Spark中的active和standby)。

Task Manager:执行作业流,缓存和交换数据流。

Task Manager中资源调度的最小单位是task slot,Task Manager中task slot的数量代表并发处理task的数量,一个task slot可以执行多个算子。

Tasks 和 算子链:

一个task是由一个线程执行的,将算子链接成task是个有用的优化,减少了线程间的切换,缓冲等开销,并且减少延迟的同时增加整体吞吐量,链行为是可以配置的。

Task slots 和 资源:

每个worker,也就是TaskManager都是一个JVM进程,可以在单独的线程中执行一个或者多个subtask,为了控制一个TaskManager中接受多少个task,就有了所谓的task slots(至少一个)。

每个task slot代表Task Manager中资源的固定子集。例如,具有3个slot的Task Manager,会将其托管内存1/3用于每个slot。分配资源意味着subtask不会与其他作业的subtask竞争托管内存,而是具有一定数量的保留托管内存。注意此处没有CPU隔离,当前slot仅分离task的托管内存。

如果说一个Task Manager只有一个Task slot。那就证明这个task组自己独享一个JVM进程。

如果说一个Task Manager有更多的slot就意味着更多subtask共享同一个JVM进程。同一个JVM中的task共享TCP连接(通过多路复用)和心跳信息。彼此之间还可以共享数据集和数据结构,从而减少了每个task的开销。

默认情况下,Flink允许subtask共享slot,即便它们是不同的task的subtask,只要是来自于同一作业即可,结果就是一个slot可以持有整个作业管道,允许slot共享有两个主要优点:

1. Flink集群所需的task slot和作业中使用的最大并行度恰好一样(一个JVM进程中,有几个task slot就有几个线程并行工作),无需计算程序总共包含多少个task(具有不同并行度)。

2. 容易获得更好的资源利用,如果没有slot共享,非密集subtask(source/map())将阻塞和密集型subtask(window)一样多的资源。通过slot共享,基本并行度从2增加到6,可以充分利用分配的资源,同时确保繁重的subtask在Task Manager之间公平分配。

Flink应用程序执行:

Flink应用程序的作业可以被提交到长期运行的Flink Session集群,专用的Flink Job集群或者Flink Application集群中,这些选项之间的差异主要与集群的生命周期和资源隔离保证有关。

Flink Session集群:集群一直运行着,不管所有的作业完成情况,只有手动停止session。

集群生命周期:在Flink Session集群中,客户端连接到一个预先存在的,长期运行的集群,该集群可以接受多个作业提交。即使所有作业完成后,集群(和JobManager)仍将继续运行直到手动停止session为止。因此,Flink Session集群的寿命不受任何Flink作业寿命的约束。

Flink Job集群:每个提交的作业启动一个集群,作业完了,Job集群自动拆掉。

集群生命周期:在Flink Job集群中,可用的集群管理器(比如Yarn和kubernetes)用于为每个提交的作业启动一个集群,并且该集群仅可用于该作业。在这里,客户端首先从集群管理器请求资源启动JobManager,然后将作业提交给在这个进程中运行的Dispatcher。然后根据作业的资源请求惰性的分配TaskManager。一旦作业完成,Flink Job集群将被拆除。

Flink Application集群:Flink Application集群不需要启动,我们手动写好了应用程序的逻辑代码之后,打包成jar包,然后用Application集群调用就可以了(main方法),应用程序是在集群上面运行的,而不是在客户端上面运行的。

集群生命周期:Flink Application集群是专用的Flink集群,仅从Flink应用程序执行作业,并且main()方法在集群上而不是客户端上运行。提交作业是一个单步骤的过程:无需先启动Flink集群,然后将作业提交到现有的session集群;相反,将应用程序逻辑和依赖打包成一个可执行的作业jar中,并且集群入口(ApplicationClusterEntryPoint)负责调用main()方法来提取JobGraph。例如,这允许你像在Kubernetes上部署任何其他应用程序一样部署Flink应用程序。因此,Flink Application集群的寿命与Flink应用程序的寿命有关。

集群特性
Flink集群类型集群生命周期资源隔离适用场景
Flink Session集群集群一直运行着,不管作业是否完成了,直到手动停掉session。slot是在提交任务的时候分配,任务完成了就释放,但是所有作业都共享一个集群,一旦其中一个TaskManager崩溃,那么TaskManager上面所有运行的task都会失败,如果JobManager出问题,那么所有正在运行的作业都完犊子了有一个预先存在的集群可以节省大量时间申请资源和启动TaskManager。因为如果作业执行时间短,但是启动时间很长的话,相对于端对端来说用户体验很差。
Flink Job集群提交一个作业就启动一个集群,作业完成了,集群自动就关掉。JobManager中的致命错误,只影响Flink Job集群中运行的一个作业。因为每一个作业单独在一个集群中运行,作业完成了,集群就自己停掉了。ResourceManager必须应用并等待外部资源管理组件来启动TaskManager进程和分配资源,所以Flink Job集群更适合长期运行,具有高稳定性要求并且对较长的启动时间不敏感的大型作业。
Flink Application集群手动写好了作业的业务逻辑代码,打成jar包,提交作业给集群就可以了,集群会调用main()方法来提取JobGraph的。ResourceManager和Dispatcher作用于单个的Flink应用程序,相比较Flink Session集群来说,它提供了更好的隔离。但是和Flink Job集群来比较的话,起始Flink Job应该算是客户端运行的方案,而Flink Application算是集群方案,因为运行在集群上面。(这是和Flink Job的区别)这个具有和Flink Job集群相同的优点和缺点。也就是说,启动慢,但是确实比较稳定,因为一个集群只运行一个作业,作业运行完了集群自己关了。所以如果有长期的需求并且对稳定性高的,我们可以考虑这种。但是和Flink Job集群不同的地方就是,这个是运行在集群里面,而不是客户端。

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

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

相关文章

3ds Max与Maya不同之处?两者哪个更适合云渲染?

3ds Max 和 Maya 都是知名的3D软件,各有其特色。3ds Max 以直观的建模和丰富的插件生态闻名;Maya 则在动画和角色创作方面更为出色。两者都支持云渲染技术,能帮助用户在云端高效完成项目。 一、3ds Max和Maya之间的主要区别: 3ds…

如何在控制台应用程序里面托管ASP.NET Core WebApi + swashbuckle生成接口文档

目录 介绍项目结构运行效果新增引用新增文件介绍 本文讲解如何在控制台应用程序里面托管ASP.NET Core WebApi + swashbuckle生成接口文档 本文是上一篇文章的延续,如果你对这部分内容还不了解,建议先读上一篇文章:如何在控制台应用程序里面托管ASP.NET Core网站 项目结构 …

原子学习笔记3——点亮 LED

一、应用层操控设备的两种方式 应用层如何操控底层硬件,同样也是通过文件 I/O 的方式来实现,设备文件便是各种硬件设备向应用层提供的一个接口,应用层通过对设备文件的 I/O 操作来操控硬件设备,譬如 LCD 显示屏、串口、按键、摄像…

MVC 过滤器

MVC 过滤器常用有4种 Action过滤器(IActionFilter) 》 行为过滤器Result过滤器 (IResultFilter)》 视图过滤器 或 结果过滤器Exception过滤器(IExceptionFilter)》 异常过滤器Authorization过滤器&#xf…

OpenAI 发布了免费的 GPT-4o,国内大模型还有哪些机会?

大家好,我是程序员X小鹿,前互联网大厂程序员,自由职业2年,也一名 AIGC 爱好者,持续分享更多前沿的「AI 工具」和「AI副业玩法」,欢迎一起交流~ 这是今天在某乎看到一个问题:OpenAI 发完 GPT-4o&…

涨点神器:即插即用特征融合模块!超低参数,性能依旧SOTA

在写论文时,一些通用性模块可以在不同的网络结构中重复使用,这简化了模型设计的过程,帮助我们加快了实验的迭代速度。 比如在视觉任务中,即插即用的特征融合模块可以无缝集成到现有网络中,以灵活、简单的方式提升神经…

AIGC数字人视频创作平台,赋能企业常态化制作数字内容营销

随着数字人技术不断发展,AIGC、元宇宙等相关产业迅速发展,企业通过3D虚拟数字人定制,打造出专属的数字人作为企业与用户沟通的新桥梁。 作为3D、AI数字人技术服务商及方案提供商,广州虚拟动力一直致力于为各领域企业通过3D虚拟数字…

OpenAI春季更新:GPT-4o模型来了!!

昨晚OpenAI直播发布了春季更新,推出了GPT-4o模型。这个模型是继gpt-4-turbo之后官方定义的新旗舰模型,可以实时对音频、视觉和文本进行推理。 它真的让人觉得,AGI又更近一步了!! GPT-4o介绍 GPT-4o(“o”…

前端工程化 - 快速通关 - ES6

目录 ES6 1.1 let 1.2 const 1.3解构 1.4链判断 1.5参数默认值 1.6箭头函数 1.7模板字符串 1.8Promise 1.9Async 函数 1.10模块化 ES6 ●ECMAScript(ES) 是规范、 JavaScript 是 ES 的实现 ●ES6 的第一个版本 在 2015 年 6 月发布&#xff0c…

相机模型,坐标变换,畸变

小孔成像模型 墨子就记录了小孔成像是倒立的。这从几何光学的角度是很好理解的:光沿直线传播,上方和下方的光线交叉,导致在成像平面位置互换。 小孔的大小有什么影响? 小孔越大,进光量变大了,但是成像平…

微信加粉计数器

1.采用非注入式开发,支持无限多开 2.每个账号都有独立的分组,实时远程网页数据分享 3.后台功能强大,操作简单,自动去重复,准确计数分秒不差

【Python】理解WOE(Weight of Evidence)和IV(Information Value)

忠孝东路走九遍 脚底下踏著曾经你我的点点 我从日走到夜 心从灰跳到黑 我多想跳上车子离开伤心的台北 忠孝东路走九遍 穿过陌生人潮搜寻你的脸 有人走的匆忙 有人爱的甜美 谁会在意擦肩而过的心碎 🎵 动力火车《忠孝东路走九遍》 在信用评分和…

可视化 FlowChart 0.4.1 最强的拖拽组件

主要解决以及目标: ti-flowchart 能满足 二次开发的大部分需求。 下发GIF图可见,左边的模块A 由二次开发人员设计,通过向flowchart注册模块Dom,实现符合拖拽,编辑,布局,以及响应事件上抛。 实…

Debian12安装后更换为国内镜像源,切换root用户,解决用户名不在sudoers文件中此事将被报告

选择Debian作为编程开发最佳Linux的理由: Debian是面向程序员的最古老,最出色的Linux发行版之一。Debian提供了具有.deb软件包管理兼容性的超稳定发行版。Debian为程序员提供了许多最新功能。因此,它具有一个特殊的编程空间。Debian是开发人员…

第十六节:图 (20节)

一 图的概念 1)由点的集合和边的集合构成 2)虽然存在有向图和无向图的概念,但实际上都可以用有向图来表达 3)边上可能带有权值 二 图结构的表达 1)邻接表法 2)邻接矩阵法 3)除此之外还有其他众多…

adminlte 日期控件设置值

1,属性设置 $(function () {//Date range picker with time picker$(#reservationtime-1).daterangepicker({timePicker: false,timePickerIncrement: 1,timePicker24Hour: true,autoApply: true,singleDatePicker: true,locale: {format: YYYY-MM-DD,daysOfWeek: …

探讨 cs2019 c++ 的STL 库中的模板 conjunction 与 disjunction

(1)在 STL 库源码中这俩模板经常出现,用来给源码编译中的条件选择,模板的版本选择等提供依据。先给出其定义: 以及: 可以得出结论: conj 是为了查找逻辑布尔型模板参数中的第一个 false &#x…

JS中的宏任务和微任务

JavaScript 引擎是建立在一个事件循环系统之上的,它实时监控事件队列,如果有事件就执行,如果没有事件就等待。事件系统是一个典型的生产消费模式,生产者发出事件,接收者监听事件,在UI 开发中是常见的一个设…

LVM - Linux磁盘逻辑卷管理器概念讲解及实践

1、lvm概念 逻辑卷管理器(LogicalVolumeManager)本质上是一个虚拟设备驱动,是在内核中块设备和物理设备之间添加的一个新的抽象层次,它可以将几块磁盘(物理卷,PhysicalVolume)组合起来形成一个存储池或者卷组(VolumeGroup)。LVM可以每次从卷组中划分出不同大小的逻辑卷(Logi…

InternLM-XComposer2-4KHD开拓性的4K高清视觉-语言模型

大型视觉-语言模型(LVLM)在图像字幕和视觉问答(VQA)等任务中表现出色。然而,受限于分辨率,这些模型在处理包含细微视觉内容的图像时面临挑战。 分辨率的限制严重阻碍了模型处理含有丰富细节的图像的能力。…