Flink的ResourceManager详解(一)

ResourceManager 总结
一、概述
1、ResourceManager 管理 Flink 集群中的计算资源,计算资源主要来自 TaskManager 组件。

2、如果集群采用 Native【本地模式】部署,则 ResourceManager 会动态地向集群资源管理器申请 Container 并启动TaskManager,例如Hadoop Yarn、Kubernetes等。

3、ResourceManager主要接收来自 JobManager 的 SlotRequest 和 TaskManager 的 SlotReport。
二、分类
1、动态资源管理 和 不支持动态资源管理
1)一类支持动态资源管理,例如KubernetesResourceManager、YarnResourceManager及MesosResourceManager

支持动态资源管理的集群类型,可以按需启动TaskManager资源,根据Job所需的资源请求,动态启动TaskManager节点,这种资源管理方式不用担心资源浪费和资源动态伸缩的问题。

实现动态资源管理的ResourceManager需要继承ActiveResourceManager基本实现类。

2)另一类不支持动态资源管理,例如StandaloneResourceManager
2、分类图

在这里插入图片描述

三、核心服务

ResourceManagerRuntimeServices 中包含 SlotManager 和 JobLeaderldService 两个主要服务和 HeartbeatService 心跳服务。

1、SlotManager 管理整个集群的 Slot 计算资源,并对 Slot 计算资源进行统一的分配和管理,同时实现了对 TaskManager 信息的注册和管理。
2、JobLeaderldService 通过实现 jobLeaderldListeners 实时监听 JobManager 的运行状态,以获取集群启动的作业对应的 JobLeaderld 信息,防止出现 JobManager 无法连接的情况,用于管理注册的 JobManager 节点,包括对 JobManager 的注册和注销等操作。
3、HeartbeatService 主要通过 TaskManagerHeartbeatListener 和 JobManagerHeartbeatListener 两个监听器收集来自 TaskManager和 JobManager 的心跳信息,以保证整个运行时中各个组件之间能够正常通信。
四、ResourceManager 的初始化和启动
DefaultDispatcherResourceManagerComponentFactory#create 方法
1、初始化 ResourceManager
 resourceManager =resourceManagerFactory.createResourceManager(configuration,ResourceID.generate(),rpcService,highAvailabilityServices,heartbeatServices,fatalErrorHandler,new ClusterInformation(hostname, blobServer.getPort()),webMonitorEndpoint.getRestBaseUrl(),metricRegistry,hostname,ioExecutor);
1)创建 ResourceManagerRuntimeServices
1.创建 SlotManager

SlotMatchingStrategy 根据作业中给定的 ResourceProfile 匹配 Slot 计算资源。SlotMatchingStrategy主要分为两种类型:

一种是LeastUtilizationSlotMatchingStrategy,即按照利用率最低原则匹配Slot资源,尽可能保证TaskExecutor上资源的使用率处于比较低的水平,这种策略能够有效降低机器的负载。

另一种是AnyMatchingSlotMatchingStrategy,即直接返回第一个匹配的Slot资源策略。

private static SlotManager createSlotManager(ResourceManagerRuntimeServicesConfiguration configuration,ScheduledExecutor scheduledExecutor,SlotManagerMetricGroup slotManagerMetricGroup) {final SlotManagerConfiguration slotManagerConfiguration =configuration.getSlotManagerConfiguration();if (configuration.isEnableFineGrainedResourceManagement()) {return new FineGrainedSlotManager(scheduledExecutor,slotManagerConfiguration,slotManagerMetricGroup,new DefaultResourceTracker(),new FineGrainedTaskManagerTracker(),new DefaultSlotStatusSyncer(slotManagerConfiguration.getTaskManagerRequestTimeout()),new DefaultResourceAllocationStrategy(SlotManagerUtils.generateTaskManagerTotalResourceProfile(slotManagerConfiguration.getDefaultWorkerResourceSpec()),slotManagerConfiguration.getNumSlotsPerWorker()),Time.milliseconds(REQUIREMENTS_CHECK_DELAY_MS));} else if (configuration.isDeclarativeResourceManagementEnabled()) {return new DeclarativeSlotManager(scheduledExecutor,slotManagerConfiguration,slotManagerMetricGroup,new DefaultResourceTracker(),new DefaultSlotTracker());} else {return new SlotManagerImpl(scheduledExecutor, slotManagerConfiguration, slotManagerMetricGroup);}}
2.创建 JobLeaderIdService
final JobLeaderIdService jobLeaderIdService =new DefaultJobLeaderIdService(highAvailabilityServices, scheduledExecutor, configuration.getJobTimeout());
2)返回创建的 StandaloneResourceManager
return new StandaloneResourceManager(rpcService,resourceId,highAvailabilityServices,heartbeatServices,resourceManagerRuntimeServices.getSlotManager(),ResourceManagerPartitionTrackerImpl::new,resourceManagerRuntimeServices.getJobLeaderIdService(),clusterInformation,fatalErrorHandler,resourceManagerMetricGroup,standaloneClusterStartupPeriodTime,AkkaUtils.getTimeoutAsTime(configuration),ioExecutor);

在 StandaloneResourceManager 构造方法中启动 RpcServer

this.rpcServer = rpcService.startServer(this);
2、启动 ResourceManager
resourceManager.start()->ResourceManager#onStart

ResourceManager#startResourceManagerServices

1)获取 leaderElectionService
leaderElectionService =highAvailabilityServices.getResourceManagerLeaderElectionService();
2)初始化 resourceManagerDriver【ActiveResourceManager需要】
resourceManagerDriver.initialize(this, new GatewayMainThreadExecutor(), ioExecutor);
3)启动 leader 竞选,在 leader 节点启动服务
1.启动心跳服务

在ResourceManager中HeartbeatService的启动方法中,包括了对taskManagerHeartbeatManager和jobManagerHeartbeatManager两个心跳管理服务的启动操作。

而心跳管理服务主要通过TaskManagerHeartbeatListener和JobManagerHeartbeatListener两个监听器收集来自TaskManager和JobManager的心跳信息,以保证整个运行时中各个组件之间能够正常通信。

startHeartbeatServices();
2.启动 slotManager 服务

通过scheduledExecutor线程池启动TaskManager周期性超时检查服务,通过checkTaskManagerTimeouts()方法实现该检查,防止TaskManager长时间掉线等问题。

启动单独的线程对提交的SlotRequest进行周期性超时检查,防止Slot请求超时。

slotManager.start(getFencingToken(), getMainThreadExecutor(), new ResourceActionsImpl());
4)启动 jobLeaderIdService
jobLeaderIdService.start(new JobLeaderIdActionsImpl());
五、总结
1、ResourceManager 通过 SlotManager 管理集群中的计算资源(TaskManager 的 SlotReport)响应 JobManager 的 SlotRequest;
2、ResourceManager 通过 HeartBeatService 监听 JobManager 和 TaskManager 的心跳,保证运行时各个组件间能够正常通信;
3、ResourceManager 通过 JobLeaderldService 管理注册的 JobManager 节点,包括对 JobManager 的注册和注销等操作;

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

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

相关文章

python+django医患档案电子病历管理系统7ld2o

本课题使用Python语言进行开发。代码层面的操作主要在PyCharm中进行,将系统所使用到的表以及数据存储到MySQL数据库中,方便对数据进行操作本课题基于WEB的开发平台 1.运行环境:python3.7/python3.8。 2.IDE环境:pycharmmysql5.7; …

ArcGIS笔记5_生成栅格文件时保存报错怎么办

本文目录 前言Step 1 直接保存到指定文件夹会报错Step 2 先保存到默认位置再数据导出到指定文件夹 前言 有时生成栅格文件时,保存在自定义指定的文件夹内会提示出错,而保存到默认位置则没有问题。因此可以通过先保存到默认位置,再数据导出到…

linux进程间通讯--信号量

1.认识信号量 方便理解:信号量就是一个计数器。当它大于0能用,小于等于0,用不了,这个值自己给。 2.特点: 信号量用于进程间同步,若要在进程间传递数据需要结合共享内存。信号量基于操作系统的 PV 操作&am…

家居行业如何打破获客困局?2023重庆建博会现场,智哪儿AI营销第一课给出了答案

10月12日-14日,2023中国(重庆)建筑及装饰材料博览会(简称:2023中国重庆建博会)正在重庆国际博览中心如火如荼地进行。「智哪儿」携手2023中国重庆建博会主办方共同主办的《2023家居行业AI营销第一课&#x…

【vscode编辑器插件】前端 php unity自用插件分享

文章目录 一篇一句前言前端vuegitphpunity后端其他待续完结 一篇一句 “思考是最困难的工作,这也许是为什么很少有人这样做。” - 亨利福特(Henry Ford) 前言 无论是什么语言,我都会选择使用vscode进行开发,我愿称v…

4K壁纸小程序源码 全内容自动采集

全内容自动采集 4K壁纸小程序源码,带流量主。用的都是一个接口,不过这个不知是谁改的,成了LSP版,是真色啊,专搜小姐姐。 4K壁纸,静态壁纸,头像等都有保留,界面广告位很多&#xff0c…

qt 实现pdf阅读器

文章目录 概要方案一方案二一、介绍二、编译三、用法本项目代码 概要 在qt程序中,要实现PDF文件浏览,从网上目前找到了两种解决方案,本文主要介绍下着两种方案和适用性。 方案一 这种方法是从https://github.com/develtar/qt-pdf-viewer-l…

idea-配置不显示某个文件

例如, 在编辑处末尾添加 target; (注意使用分号分割) 则不会在项目位置出现该目录

Confluence 自定义展示页面

1. 概述 Confluence 作为知识库可通过JS脚本方式&#xff0c;根据登录用户或用户组进行前端页面的自定义 2. 实现方式 Confluence →管理→自定义HTML 嵌入对应JS脚本&#xff0c;示例如下 <script type"text/javascript">jQuery(#footer).html(<div>…

22款奔驰S450L升级主动式氛围灯 提升安全提示 又好看

主动式氛围灯有263个可多色渐变的LED光源&#xff0c;营造出全情沉浸的动态光影氛围。结合智能驾驶辅助系统&#xff0c;可在转向或检测到危险时&#xff0c;予以红色环境光提示&#xff0c;令光影艺术彰显智能魅力。配件有6个氛围灯&#xff0c;1个电脑模块。Xjh15863 了解更多…

Django REST Framework完整教程-RESTful规范-序列化和反序列数据-数据视图

文章目录 1.简介及安装2.案例模型2.1.创建模型2.2.安装mysql必要组件2.3.管理后台转中文2.4.启动后台 3.数据序列化4.RESTful规范4.1.协议、域名和版本4.2.uri(统一资源标识符)4.3.查增删改4.4.过滤信息&#xff08;Filtering&#xff09;4.5.状态码&#xff08;Status Codes&a…

保姆级教程:百度AI简单使用

1.进入AI对话界面 随便提个问题 这里我选择了程序猿小助手 文心一言网站 https://yiyan.baidu.com/welcome 文心一言可以做什么 与人对话互动&#xff0c;回答问题&#xff0c;协助创作&#xff0c;高效便捷地帮助人们获取信息、知识和灵感。 参考截图

相似性搜索:第 6 部分--LSH 森林的随机投影

一、说明 相似性搜索是一个问题&#xff0c;给定一个查询&#xff0c;目标是在所有数据库文档中找到与其最相似的文档。 在数据科学中&#xff0c;相似性搜索经常出现在 NLP 领域、搜索引擎或推荐系统中&#xff0c;其中需要检索最相关的文档或项目以进行查询。有多种不同的方法…

2023年中国熔盐储能装机量、新增装机量及行业投资规模分析[图]

熔盐储能是一种可以传递能量、长时间&#xff08;6-8h&#xff09;、大容量储能的技术路径&#xff0c;作为传热介质可以实现太阳能到热能的转换&#xff0c;作为储能介质可以实现将热能和电能的双向转换&#xff0c;可以很好的适应和解决以上两大矛盾。因此&#xff0c;熔盐储…

Linux/Ubuntu 安装 Java运行环境

linux下安装Java运行环境 1、下载安装包 .tar.gz 先在官网下载 JDK 点击这里 在这里要选择对应的 JDK 版本&#xff0c;一般我们目前选择JDK8 点击这里 2、在 /usr/local/ 目录下创建Java文件夹 cd /usr/local/ mkdir java3、将下载的文件通过FTP程序上传到刚刚创建的Java文…

Java对象数组练习

定义数组存储三个商品对象&#xff0c;商品的属性&#xff1a;id&#xff0c;名字&#xff0c;价格&#xff0c;库存&#xff0c;创建三个商品对象&#xff0c;并把商品对象存入到数组中 public class Goods {private String id;private String name;private double price;pri…

注意力屏蔽(Attention Masking)在Transformer中的作用 【gpt学习记录】

填充遮挡&#xff08;Padding Masking&#xff09;&#xff1a; 未来遮挡&#xff08;Future Masking&#xff09;&#xff1a;

星环科技向量数据库Transwarp Hippo1.1发布:一库搞定向量+全文联合检索,提升大模型准确率

星环科技向量数据库Transwarp Hippo自发布已来,受到了众多用户的欢迎,帮助用户实现向量数据的存储、管理和检索,探索和实践大模型场景。在与用户不断地深入交流以及实践中,Hippo迎来了V1.1版本,一套系统即可支持向量与全文联合检索,提高文本数据的召回精度,从而提升大语…

Apipost使用介绍

相信无论是前端&#xff0c;还是后端的测试和开发人员&#xff0c;都遇到过这样的困难。不同工具之间数据一致性非常困难、低效。多个系统之间数据不一致&#xff0c;导致协作低效、频繁出问题&#xff0c;开发测试人员痛苦不堪。 API管理的难点在哪&#xff1f; 开发人员在 …

基于Java的美食推荐管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…