ResourceManager基本职能和内部架构
- ResourceTracker : NodeManager通过该RPC协议向ResourceManager注册、汇报节点健康状况和Container运行状态,并领取ResourceManager下达的命令,这些命令包括重新初始化、清理Container等,在该RPC协议中,ResourceManager扮演RPCServer的角色,而NodeManager扮演RPCClient的角色,换句话说,NodeManager与ResourceManager之间采用了“pull模型”,NodeManager总是周期性地主动向ResourceManager发起请求,并通过领取下达给自己的命令
- ApplicationMasterProtocol :应用程序的ApplicationMaster通过该RPC协议向ResourceManager注册、申请资源和释放资源。在该协议中,ApplicationMaster扮演RPC Client的角色,而ResourceManager扮演RPC Server的角色,换句话说,ResourceManager与ApplicationMaster之间采用了“pull模型”
- ApplicationClientProtocol :应用程序的客户端通过该RPC协议向ResouceManager提交应用程序、查询应用程序状态和控制应用程序等。在该协议中,应用程序客户端扮演RPC Client的角色,而ResourceManager扮演RPC Server的角色
- 与客户端交互,处理来自客户端的请求
- 启动和管理AppicationMaster,并在它运行失败时重新启动它
- 管理NodeManager,接收来自NodeManager的资源汇报信息,并向NodeManager下达管理指令
- 资源管理与调度,接收来自AppMaster的资源申请请求,并为之分配资源
- 用户交互模块。ResourceManager分别针对普通用户、管理员和Web提供了三种对外服务,具体实现分别对应ClientRMService、AdminService和WebApp
- ClientRMService。ClientRMService是为普通用户提供的服务,它处理来自客户端各种RPC请求,比如提交应用程序、终止应用程序、获取应用程序运行状态等
- AdminService。ResourceManager为管理员提供了一套独立的服务接口,以防止大量的普通用户请求使管理员发送的管理命令饿死,管理员可通过这些接口管理集群,比如动态更新节点列表、更新ACL列表、更新队列信息等
- WebApp。为了更加友好地展示集群资源使用情况和应用程序运行状态等信息,YARN对外提供了一个WEB界面,这一部分是YARN仿照Haml开发的一个轻量级嵌入式Web框架
- NM管理模块。该模块主要涉及以下组件 :
- NMLivelinessMonitor。监控NM是否活着,如果一个NodeManager在一定时间内未汇报心跳信息,则认为它死掉了,需将其从集群中移除
- NodesListManager。维护正常节点和异常节点列表,管理exclude(类似于黑名单)和include(类似于白名单)节点列表,这两个列表均是在配置文件中设置的,可以动态加载
- ResourceTrackerService。处理来自NodeManager的请求,主要包括注册和心跳两种请求,其中,注册时NodeManager启动时发生的行为,请求包中包含节点ID、可用的资源上限等信息;而心跳时周期性行为,包含各个Container运行状态,运行的Application列表、节点资源状况等信息,作为请求的应答,ResourceTrackerService可为NodeManager返回待释放的Container列表、Application列表等信息
- AM管理模块。该模块主要涉及以下组件 :
- AMLivelinessMonitor。监控AM是否活着,如果一个ApplicationMaster在一定时间内未汇报心跳信息,则认为它死掉了,它上面所有正在运行的Container将被置为失败状态,而AM本身会被重新分配到另外一个节点上执行
- ApplicationMasterLauncher。与某个NodeManager通信,要求它为某个应用程序启动ApplicationMaster
- ApplicationMasterService。处理来自ApplicationMaster的请求,主要包括注册和心跳两种请求,其中,注册是ApplicationMaster启动时发生的行为,注册请求包中包含ApplicationMaster启动节点;对外RPC端口号和trackingURL等信息;而心跳而是周期性行为,汇报信息包含所需资源描述、待释放的Container列表、黑名单列表等,而AMS则为之返回新分配的Container、失败的Container、待抢占的Container列表等信息
- Application管理模块。该模块主要涉及以下组件 :
- ApplicationACLsManager。管理应用程序访问权限,包含两部分权限 :查看权限和修改权限。查看权限主要用于查看应用程序基本信息,而修改权限则主要用于修改应用程序优先级、杀死应用程序等
- RMAppManager。管理应用程序的启动和关闭
- ContainerAllocationExpirer。当AM收到RM新分配的一个Container后,必须在一定的时间内在对应的NM上启动该Container,否则RM将强制回收该Container,而一个已经分配的Container是否该被回收则是由ContainerAllocationExpirer决定和执行的
- 状态机管理模块。ResourceManager使用有限状态机维护有状态对象的生命周期,状态机的引入使得YARN设计架构更加清晰。ResourceManager共维护了四类状态机,分别是RMApp、RMAppAttempt、RMContainer和RMNode
- RMApp。RMApp维护了一个应用程序的整个运行周期,包括从启动到运行结束整个过程。由于一个Application的生命周期可能会启动多个Application运行实例,因此可认为,RMApp维护的是同一个Application启动的所有运行实例的生命周期
- RMAppAttempt。一个应用程序可能启动多个实例,即一个实例运行失败后,可能再次启动一个重新运行,而每次启动称为一个运行尝试,用“RMAppAttempt”描述,RMAppAttempt维护了一次运行尝试的整个生命周期
- RMContainer。RMContainer维护了一个Container的运行周期,包括从创建到运行结束整个过程。RM将资源封装成Container发送给应用程序的ApplicationMaster,而ApplicationMaster则会在Container描述的运行环境中启动任务,因此,从这个层面上讲,Container和任务的生命周期是一致的
- RMNode。RMNode维护了一个NodeManager的生命周期,包括启动到运行结束整个过程
- 安全管理模块。ResourceManager自带了非常全面的权限管理机制,主要由ClientTOAMSecretManager、ContainerTokenSecretManager、ApplicationTokenSecretManager等模块完成
- 资源分配模块。该模块主要涉及一个组件 -- ResourceScheduler。ResourceScheduler是资源调度器,它按照一定的约束条件将集群中的资源分配给各个应用程序,当前主要考虑内存和CPU资源。ResourceScheduler是一个插拔式模块,YARN自带了一个批处理资源调度器 -- FIFO和两个多用户调度器 -- Fair Scheduler和Capacity Scheduler

ResourceManager基本职能和内部架构的更多相关文章
- NodeManager概述(基本职能和内部架构)
概述 NodeManager是运行在单个节点上的代理,它需要与应用程序的的ApplicationMaster和集群管理者ResourceManager交互: 从ApplicationMaster上接收 ...
- android安卓 SQLite教程:内部架构及SQLite使用办法
SQLite 介绍 SQLite一个非常流行的嵌入式数据库,它支持SQL语言,并且只利用很少的内存就有很好的性能.由于JDBC不适合手机这种内存受限设备,所以Android开发人员需要学习新的API ...
- RPi 2B Raspbian SD卡内部架构
/***************************************************************************** * RPi 2B Raspbian SD卡 ...
- 基于Java图片数据库Neo4j 3.0.0发布 全新的内部架构
基于Java图片数据库Neo4j 3.0.0发布 全新的内部架构 Neo4j 3.0.0 正式发布,这是 Neo4j 3.0 系列的第一个版本.此版本对内部架构进行了全新的设计;提供给开发者更强大的生 ...
- 浅析 jQuery 内部架构设计
jQuery 对于大家而言并不陌生,因此关于它是什么以及它的作用,在这里我就不多言了,而本篇文章的目的是想通过对源码简单的分析来讨论 jQuery 的内部架构设计,以及 jQuery 是如何利用Jav ...
- 转载->CPU的内部架构和工作原理
CPU的内部架构和工作原理 本片博客转自:http://www.cnblogs.com/onepixel/p/8724526.html 感谢博主分享! 内部架构 CPU 的根本任务就是执行指令,对计 ...
- CPU的内部架构和工作原理 (转,相当不错)
http://blog.chinaunix.net/uid-23069658-id-3563960.html 一直以来,总以为CPU内部真是如当年学习<计算机组成原理>时书上所介绍的那样, ...
- CPU的内部架构和工作原理
一直以来,总以为CPU内部真是如当年学习<计算机组成原理>时书上所介绍的那样,是各种逻辑门器件的组合.当看到纳米技术时就想,真的可以把那些器件做的那么小么?直到看了Intel CPU制作流 ...
- linux学习之硬盘的存储原理和内部架构
原文地址:https://blog.csdn.net/tanggao1314/article/details/52074735 首先,让我们看一下硬盘的发展史: 1956年9月13日,IBM的IBM ...
随机推荐
- [NLP] 相对位置编码(一) Relative Position Representatitons (RPR) - Transformer
对于Transformer模型的positional encoding,最初在Attention is all you need的文章中提出的是进行绝对位置编码,之后Shaw在2018年的文章中提出了 ...
- 基于V2EX API的nodejs组件.
今天又学习到了新的知(zi)识(shi),来给自己做个笔录,也算在这酷热的天气里给自己写了一篇降温的‘膏药’,话就讲这么多了 ,start off...... 首先 ,依赖选择: /**设置为严格模式 ...
- 【Intellij】导出 jar 包
需要在 Intellij 导出 jar 包,一时不知道该怎么做,后来总算找到了方法,步骤如下: 1. File → Project Structure... → Artifacts → + → jar ...
- MOCTF-WEB-writeup
MOCTF-WEB-writeup 好菜,除了简单的几个题,自己会做,难的都是看老大WP完成的,太菜了 啥姿势都不会,就此记录一下,供日后查看及反省.菜鸡的自我修养 0x01 一道水题 题目链接:ht ...
- python中的赋值操作与C语言中的赋值操作中的巨大差别
首先让我们来看一个简单的C程序: a = ; b = a; b = ; printf("a = %d, b = %d\n", a, b); 相信只要学过C语言, 不用运行程序便能知 ...
- 湫湫系列故事——设计风景线 HDU - 4514
题目链接:https://vjudge.net/problem/HDU-4514 题意:判断没有没有环,如果没有环,通俗的讲就是找出一条最长的路,相当于一笔画能画多长. 思路:dfs判环. 最后就是没 ...
- 本地NTP服务器与客户端配置
1. NTP 简介 NTP是网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间的协议. 在集群中,为了保证各节点之间的时间一致,我们通常需要配置本地的 NT ...
- MyBatis 一级缓存、二级缓存全详解(一)
目录 MyBatis 一级缓存.二级缓存全详解(一) 什么是缓存 什么是MyBatis中的缓存 MyBatis 中的一级缓存 初探一级缓存 探究一级缓存是如何失效的 一级缓存原理探究 还有其他要补充的 ...
- APPCAN 版本控制SVN
1.检出代码 checkout 常规的操作 appcan 中,在官网新建一个项目后,就会有一项目的svn 地址,而且已经是主干分支了,这个是项目的位移目录,不能再trunk目录同级创建分子 ...
- C++学习想法
今天是周一,今天做早操的时候舍友说准备买一本C++基础的书.我觉得这样的想法很好,突然想到自己最近几天因为自己私人原因事情很忙,蛋这不能成为我不学C++的理由.所以我在这规划了我这一周的学习进程.首先 ...