flink笔记:022-26系统架构

这篇具有很好参考价值的文章主要介绍了flink笔记:022-26系统架构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

flink笔记:022-26系统架构
其实客户端并不是处理系统的一部分,它只负责作业的
提交。具体来说,就是调用程序的 main 方法,将代码转换成“数据流图”(Dataflow Graph),
并最终生成作业图(JobGraph),一并发送给 JobManager。提交之后,任务的执行其实就跟客
户端没有关系了

作业管理器(JobManager)

JobManager 是一个 Flink 集群中任务管理和调度的核心,是控制应用执行的主进程。也就
是说,每个应用都应该被唯一的 JobManager 所控制执行。当然,在高可用(HA)的场景下,
可能会出现多个 JobManager;这时只有一个是正在运行的领导节点(leader),其他都是备用
节点(standby)。

JobManger 又包含 3 个不同的组件,下面我们一一讲解。

JobMaster
JobMaster 是 JobManager 中最核心的组件,负责处理单独的作业(Job)。所以 JobMaster
和具体的 Job 是一一对应的,多个 Job 可以同时运行在一个 Flink 集群中, 每个 Job 都有一个
自己的 JobMaster。需要注意在早期版本的 Flink 中,没有 JobMaster 的概念;而 JobManager
的概念范围较小,实际指的就是现在所说的 JobMaster。
在作业提交时,JobMaster 会先接收到要执行的应用。这里所说“应用”一般是客户端提
交来的,包括:Jar 包,数据流图(dataflow graph),和作业图(JobGraph)。
JobMaster 会把 JobGraph 转换成一个物理层面的数据流图,这个图被叫作“执行图”
(ExecutionGraph),它包含了所有可以并发执行的任务。 JobMaster 会向资源管理器
(ResourceManager)发出请求,申请执行任务必要的资源。一旦它获取到了足够的资源,就会
将执行图分发到真正运行它们的 TaskManager 上。
而在运行过程中,JobMaster 会负责所有需要中央协调的操作,比如说检查点(checkpoints)
的协调。
资源管理器(ResourceManager)
ResourceManager 主要负责资源的分配和管理,在 Flink 集群中只有一个。所谓“资源”,
主要是指 TaskManager 的任务槽(task slots)。任务槽就是 Flink 集群中的资源调配单元,包含
了机器用来执行计算的一组 CPU 和内存资源。每一个任务(Task)都需要分配到一个 slot 上
执行。
这里注意要把 Flink 内置的 ResourceManager 和其他资源管理平台(比如 YARN)的
ResourceManager 区分开。
Flink 的 ResourceManager,针对不同的环境和资源管理平台(比如 Standalone 部署,或者
YARN),有不同的具体实现。在 Standalone 部署时,因为 TaskManager 是单独启动的(没有
Per-Job 模式),所以 ResourceManager 只能分发可用 TaskManager 的任务槽,不能单独启动新
TaskManager。
而在有资源管理平台时,就不受此限制。当新的作业申请资源时,ResourceManager 会将
有空闲槽位的 TaskManager 分配给 JobMaster。如果 ResourceManager 没有足够的任务槽,它
还可以向资源提供平台发起会话,请求提供启动 TaskManager 进程的容器。另外,
ResourceManager 还负责停掉空闲的 TaskManager,释放计算资源。
分发器(Dispatcher)
Dispatcher 主要负责提供一个 REST 接口,用来提交应用,并且负责为每一个新提交的作
业启动一个新的 JobMaster 组件。Dispatcher 也会启动一个 Web UI,用来方便地展示和监控作
业执行的信息。Dispatcher 在架构中并不是必需的,在不同的部署模式下可能会被忽略掉。

任务管理器(TaskManager)

TaskManager 是 Flink 中的工作进程,数据流的具体计算就是它来做的,所以也被称为
“Worker”。Flink 集群中必须至少有一个 TaskManager;当然由于分布式计算的考虑,通常会
有多个 TaskManager 运行,每一个 TaskManager 都包含了一定数量的任务槽(task slots)。Slot
是资源调度的最小单位,slot 的数量限制了 TaskManager 能够并行处理的任务数量。
启动之后,TaskManager 会向资源管理器注册它的 slots;收到资源管理器的指令后,
TaskManager 就会将一个或者多个槽位提供给 JobMaster 调用,JobMaster 就可以分配任务来执
行了。
在执行过程中,TaskManager 可以缓冲数据,还可以跟其他运行同一应用的 TaskManager
交换数据

作业提交流程

flink笔记:022-26系统架构

(1) 一般情况下,由客户端(App)通过分发器提供的 REST 接口,将作业提交给
JobManager。 
(2)由分发器启动 JobMaster,并将作业(包含 JobGraph)提交给 JobMaster。
(3)JobMaster 将 JobGraph 解析为可执行的 ExecutionGraph,得到所需的资源数量,然后
向资源管理器请求资源(slots)。
(4)资源管理器判断当前是否由足够的可用资源;如果没有,启动新的 TaskManager。 
(5)TaskManager 启动之后,向 ResourceManager 注册自己的可用任务槽(slots)。
(6)资源管理器通知 TaskManager 为新的作业提供 slots。
(7)TaskManager 连接到对应的 JobMaster,提供 slots。 
(8)JobMaster 将需要执行的任务分发给 TaskManager。 
(9)TaskManager 执行任务,互相之间可以交换数据。

yarn会话模式提交作业流程

flink笔记:022-26系统架构
单作业模式:
flink笔记:022-26系统架构

算子链(Operator Chains)

Flink采用了一种称为任务链的优化技术,可以在特定条件下减少本地通
信的开销。为了满足任务链的要求,必须将两个或多个算子设为相同的
并行度,并通过本地转发(local forward)的方式进行连接
·相同并行度的one-to-one操作,Flink这样相连的算子链接在一起形成
一个task,原来的算子成为里面的subtask
·并行度相同、并且是one-to-one操作,两个条件缺一不可

flink笔记:022-26系统架构
算子合并后的,当然也可以禁用算子链
flink笔记:022-26系统架构文章来源地址https://www.toymoban.com/news/detail-404307.html

到了这里,关于flink笔记:022-26系统架构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微服务架构,客户端如何catch服务端的异常?

    在微服务架构或者分布式系统中,客户端如何捕捉服务端的异常? 这里说的客户端指调用方、服务端指被调用方,它们通常运行在不同的进程之中,这些进程可能运行在同一台服务器,也可能运行在不同的服务器,甚至不同的数据机房;其使用的技术栈可能相同,也可能存在

    2024年03月09日
    浏览(35)
  • Kafka系列 - 生产者客户端架构以及3个重要参数

    整个生产者客户端由两个县城协调运行,这两个线程分别为主线程和Sender线程(发送线程)。 主线程中由KafkaProducer创建消息,然后通过可能的拦截器,序列化器和分区器之后缓存到 消息累加器(RecordAccumulator) 。Sender线程负责从RecordAccumulator中获取消息并将其发送到kafka中。

    2024年02月04日
    浏览(33)
  • 30、Flink SQL之SQL 客户端(通过kafka和filesystem的例子介绍了配置文件使用-表、视图等)

    一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的datastream api用法、四大基石等内容。 3、

    2024年02月14日
    浏览(51)
  • ios客户端学习笔记(七):iOS客户端的UI设计

    iOS客户端的UI设计是指在iOS操作系统上开发应用程序时所涉及的用户界面设计,包括应用程序的布局、颜色、字体、图标等元素的设计。良好的UI设计应该能够提高用户体验,使用户能够轻松地使用应用程序。 在iOS客户端的UI设计中,需要考虑以下几个方面: 应用程序布局应

    2023年04月26日
    浏览(33)
  • 【高并发网络通信架构】2.引入多线程实现多客户端连接的tcp服务端

    目录 一,往期文章 二,代码实现 关键代码 完整代码 运行效果 【高并发网络通信架构】1.Linux下实现单客户连接的tcp服务端 因为accept是阻塞等待客户端连接,当客户端连接成功后才会执行accept后面的代码,所以为实现多个客户端连接,第一步是将accept放在master循环里。 rec

    2024年02月13日
    浏览(35)
  • 大型Android项目架构:基于组件化+模块化+Kotlin+协程+Flow+Retrofit+Jetpack+MVVM架构实现WanAndroid客户端

    前言:苟有恒,何必三更眠五更起;最无益,莫过一日曝十日寒。 之前一直想写个 WanAndroid 项目来巩固自己对 Kotlin+Jetpack+协程 等知识的学习,但是一直没有时间。这里重新行动起来,从项目搭建到完成前前后后用了两个月时间,平常时间比较少,基本上都是只能利用零碎的

    2024年02月09日
    浏览(40)
  • 企业架构LNMP学习笔记26

    通过Keepalived可以实现主服务器整机不可用,实现VIP的切换。保证用户可以通过VIP进行访问服务。但是实际上,往往不是服务器整机不可用,只是对应的服务或者软件不可用。 比如说,nginx提供的web的服务,nginx进程关闭。 就需要检测当nginx不可用的时,就切换VIP。 实现过程分

    2024年02月09日
    浏览(24)
  • rabbitmq笔记-rabbitmq客户端开发使用

    1.创建ConnectionFactory,给定参数ip地址,端口号,用户名和密码等 2.创建ConnectionFactory,使用uri方式实现,创建channel。 注意: Connection可以用来创建多个channel实例,但channel实例不能在线程间共享,应用程序为每个线程开辟一个channel。多线程间共享channel实例是非线程安全的。

    2024年02月11日
    浏览(34)
  • Eureka 学习笔记2:客户端 DiscoveryClient

    版本 awsVersion = ‘1.11.277’ DiscoveryClient # cacheRefreshTask shouldFetchRegistry 指定是否从服务端拉取注册列表,默认 true client.refresh.interval 指定从服务端拉取注册列表的时间间隔,默认 30s client.cacheRefresh.exponentialBackOffBound 指定从服务端拉取注册列表的 最大时间间隔 ,默认 10 注1 :当

    2024年02月15日
    浏览(28)
  • ElasticSearch-学习笔记04【Java客户端操作索引库】

    Java后端-学习路线-笔记汇总表【黑马程序员】 ElasticSearch-学习笔记01【ElasticSearch基本介绍】 【day01】 ElasticSearch-学习笔记02【ElasticSearch索引库维护】 ElasticSearch-学习笔记03【ElasticSearch集群】 ElasticSearch-学习笔记04【Java客户端操作索引库】 【day02】 ElasticSearch-学习笔记05【Spri

    2023年04月09日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包