在YARN中,ResourceManager负责集群中所有资源的统一管理和分配,它接收来自各个节点(NodeManager)的资源汇报信息,并把这些信息按照一定的策略分配给各个应用程序(实际上是ApplicationManager)。

ResourceManager主要由以下几个部分组成:

用户交互

YARN分别针对普通用户,管理员和Web提供了三种对外服务,分别对应ClientRMService、AdminService和WebApp:

ClientRMService

ClientRMService是为普通用户提供的服务,它会处理来自客户端各种RPC请求,比如提交应用程序、终止应用程序,获取应用程序运行状态等。

AdminService

YARN为管理员提供了一套独立的服务接口,以防止大量的普通用户请求使管理员发送的管理命令饿死,管理员可通过这些接口管理集群,比如动态更新节点列表,更新ACL列表,更新队列信息等。

WebApp

为了更加友好地展示集群资源使用情况和应用程序运行状态等信息,YARN对外提供了一个Web 界面,这一部分是YARN仿照haml(http://haml.info/)开发的一个轻量级嵌入式Web框架。具体讨论见:https://issues.apache.org/jira/browse/MAPREDUCE-2399

NM管理

NMLivelinessMonitor

监控NM是否活着,如果一个NodeManager在一定时间(默认为10min)内未汇报心跳信息,则认为它死掉了,会将其从集群中移除。

NodesListManager

维护正常节点和异常节点列表,管理exlude(类似于黑名单)和inlude(类似于白名单)节点列表,这两个列表均是在配置文件中设置的,可以动态加载。

ResourceTrackerService

处理来自NodeManager的请求,主要包括两种请求:注册和心跳,其中,注册是NodeManager启动时发生的行为,请求包中包含节点ID,可用的资源上限等信息,而心跳是周期性 行为,包含各个Container运行状态,运行的Application列表、节点健康状况(可通过一个脚本设置),而ResourceTrackerService则为NM返回待释放的Container列表、Application列表等。

AM管理

AMLivelinessMonitor

监控AM是否活着,如果一个ApplicationMaster在一定时间(默认为10min)内未汇报心跳信息,则认为它死掉了,它上面所有正在运行的Container将被认为死亡,AM本身会被重新分配到另外一个节点上(用户可指定每个ApplicationMaster的尝试次数,默认是1次)执行。

ApplicationMasterLauncher

与NodeManager通信,要求它为某个应用程序启动ApplicationMaster。

ApplicationMasterService

处理来自ApplicationMaster的请求,主要包括两种请求:注册和心跳,其中,注册是ApplicationMaster启动时发生的行为,包括请求包中包含所在节点,RPC端口号和tracking URL等信息,而心跳是周期性 行为,包含请求资源的类型描述、待释放的Container列表等,而AMS则为之返回新分配的Container、失败的Container等信息。

Application管理

ApplicationACLsManager

管理应用程序访问权限,包含两部分权限:查看和修改,查看主要指查看应用程序基本信息,而修改则主要是修改应用程序优先级、杀死应用程序等。

RMAppManager

管理应用程序的启动和关闭。

ContainerAllocationExpirer

YARN不允许AM获得Container后长时间不对其使用,因为这会降低整个集群的利用率。当AM收到RM新分配的一个Container后,必须在一定的时间(默认为10min)内在对应的NM上启动该Container, 否则,RM会回收该Container。

安全管理

ResourceManage自带了非常全面的权限管理机制,主要由ClientToAMSecretManager、ContainerTokenSecretManager、ApplicationTokenSecretManager等模块完成。

资源分配

ResourceScheduler

ResourceScheduler是资源调度器,它按照一定的约束条件(比如队列容量限制等)将集群中的资源分配给各个应用程序,当前主要考虑内存资源,在3.0版本中将会考虑CPU(https://issues.apache.org/jira/browse/YARN-2)。ResourceScheduler是一个插拔式模块,默认是FIFO实现,YARN还提供了Fair Scheduler和Capacity Scheduler两个多租户调度器。

参考资料:

http://hortonworks.com/blog/apache-hadoop-yarn-resourcemanager/

原创文章,转载请注明: 转载自董的博客

本文链接地址: http://dongxicheng.org/mapreduce-nextgen/yarnmrv2-resource-manager-infrastructure/

YARN/MRv2 Resource Manager深入剖析—NM管理

NodeManager管理部分主要由三个服务构成,分别是NMLivelinessMonitor、NodesListManager和ResourceTrackerService,它们共同管理NodeManager的生存周期,接下来我们依次介绍这三个服务。

NMLivelinessMonitor

该服务周期性遍历所有NodeManager,如果一个NodeManager在一定时间(可通过参数yarn.nm.liveness-monitor.expiry-interval-ms配置,默认为10min)内未汇报心跳信息,则认为它死掉了,它上面所有正在运行的Container将被置为运行失败(RM不会重新执行这些Container,它只会通过心跳机制告诉对应的AM,由AM决定是否重新执行,如果需要,则AM重新向RM申请资源)。

NodesListManager

NodesListManager维护正常节点和异常节点列表,它管理exlude(类似于黑名单)和inlude(类似于白名单)节点列表,这两个列表所在的文件分别可通过yarn.resourcemanager.nodes.include-path和yarn.resourcemanager.nodes.exclude-path配置(每个节点host占一行),其中,exlude节点是排外节点,它们无法与RM取得连接(直接在RPC层抛出异常,导致NM死掉),默认情况下,这两个列表均为空,表示任何节点均可接入RM。最重要的一点是,这两个文件均可以动态加载。

ResourceTrackerService

ResourceTrackerService负责处理来自各个NodeManager的请求,主要包括两种请求:注册和心跳,其中,注册是NodeManager启动时发生的行为,请求包中包含节点ID,可用的资源上限等信息,而心跳是周期性 行为,包含各个Container运行状态,运行的Application列表、节点健康状况(可通过一个脚本设置),而ResourceTrackerService则为NM返回待释放的Container列表、Application列表等。

当一个NM启动时,他所做的第一件事是向RM注册,这是通过RPC函数ResourceTracker.registerNodeManager()实现的。

NM启动时候,它会周期性的通过RPC函数ResourceTracker. nodeHeartbeat ()汇报心跳,具体包含各个Container运行状态、运行的Application列表、节点健康状况等信息,而RM则位置返回需要释放的Container列表,Application列表等。

原创文章,转载请注明: 转载自董的博客

本文链接地址: http://dongxicheng.org/mapreduce-nextgen/yarnmrv2-resource-manager-nm-manager/

YARN/MRv2 Resource Manager深入剖析—RM总体架构相关推荐

  1. 详解yarn的resource manager组件

    详解yarn的resource manager组件

  2. 有关YARN/MRv2 相关

    文章主要来自董的博客: YARN/MRv2 Node Manager深入剖析-Container启动过程 http://dongxicheng.org/mapreduce-nextgen/yarnmr ...

  3. hadoop之 YARN配置参数剖析—RM与NM相关参数

    参数均需要在yarn-site.xml中配置: 1. ResourceManager相关配置参数 (1) yarn.resourcemanager.address 参数解释:ResourceManag ...

  4. Hadoop YARN配置参数剖析—RM与NM相关参数

    注意,配置这些参数前,应充分理解这几个参数的含义,以防止误配给集群带来的隐患.另外,这些参数均需要在yarn-site.xml中配置. 1.    ResourceManager相关配置参数 (1) ...

  5. YARN - Task, Node manager, AppMaster, Resource manager 失败时所做的处理

    本文为< Hadoop 权威指南第四版 >(英文原版) 读书笔记,仅限交流使用,转载请注明出处,多谢. YARN - 失败时所做的处理 Henvealf/文 YARN 的失败总共包含四种实 ...

  6. System.Transactions:实现你自己的Resource Manager

    By Sahil Malik[http://www.developer.com/net/net/article.php/11087_3565196_1] .net 2.0所带来最大的变化之一也许就是S ...

  7. 彻底禁用resource manager

    禁用resource manager 由于发现系统的一个等待事件:resmgr:cpu quantum.这是由于resource manager的原因.看来resource manager 的bug还 ...

  8. 【原创视频】Docker总体架构设计及各模块原理剖析

    Docker总体架构设计及各模块原理剖析

  9. 在 Azure Resource Manager 中为虚拟机设置密钥保管库

    Note Azure 具有两种不同的部署模型,用于创建和处理资源:Resource Manager 模型和经典模型.本文介绍使用 Resource Manager 部署模型.Azure 建议对大多数新 ...

最新文章

  1. excel去掉一行文字中的逗号合并在一起_Python使用pandas库五行代码合并excel
  2. VTK:行军案用法实战
  3. 盒模型的属性丶display显示丶浮动
  4. C语言 有符号字符型输出 面试题
  5. 怎样在vs中监视char*字符串_字符串指针数据类型
  6. BT5 R1不能启动ibus输入法解决方案
  7. html5画布作品,HTML5 canvas画布
  8. Ansible首次ssh问题解决
  9. 空间统计分析之距离-思维导图(1)
  10. vsphere报错: 连接到虚拟机控制台失败并显示错误:VMRC 控制台的连接已断开。正在尝试重新连接
  11. 【加拿大签证】加拿大工签/工作许可work permit 办理流程【官方详细完整,加拿大访问学者必看】
  12. SQL_Xbar代码
  13. win10安装oracle客户端
  14. openssl的部分使用例子
  15. Delphi医保支付【支持重庆,湖南,湖北,河南,江苏,黑龙江,吉林等医保接口】
  16. 记录下我磕磕碰碰的三个月找工作经历,完整PDF
  17. 2020年3月最后一周心得
  18. Python 实现获取【昨天】日期
  19. Linux解决tar:它似乎不像是一个tar归档文件
  20. 搭建之星中文编程汉语编程计算机快速入门教学教程

热门文章

  1. [推荐算法]ItemCF,基于物品的协同过滤算法
  2. Java - 从文件压缩聊一聊I/O一二事
  3. 爬虫学习笔记(十九)—— 滑动验证码
  4. 说说你对binlog、redo log和undo log的理解
  5. python 猜数字大小
  6. python语句分为复合语句_复合语句if条件的Python求值
  7. dhcp服务器由谁维护,DHCP服务器管理维护的心得
  8. java jvm崩溃_IObjects java 代码导致jvm崩溃了
  9. 公文字体字号标准2020_公文格式的数字顺口溜(收藏)
  10. 2020-12-14 Matlab 模糊控制 车辆泊车 案例分享