深入学习Hadoop之第三篇——YARN架构解析

MapReduce在YARN上被执行。以下内容涉及的task均是指map tasks或者reduce tasks.

YARN的基本思想:是将资源管理和作业的调度/监控相分离,使它们运行在不同的守护进程中。

该思想是为了达到:有一个全局的ResourceManager以及每个Application独有的ApplicationManager
一个Application可能是单个job,也可能是一DAG(有向无环图)的jobs.


ResourceManager和NodeManager组成了数据计算框架。ResourceManager有最高权威,它可以在系统中的所有Applications之间仲裁资源的归属。
NodeManager是每个工作节点的框架代理,负责containers、监控他们的资源(cpu,memory,disk,network)使用情况并把这些信息report给ResourceManager/Scheduler

每个Application的ApplicationManager实际上是一个框架具体的库,其任务是从ResourceManager申请资源,并和NodeManager一起来执行、监控tasks。

ResourceManager有两个主要的组件:Scheduler(调度器)和ApplicationsManager(应用管理器)
Scheduler负责分配资源给各种运行着的applications,这些applications受容量、排队等常规情况的限制。
就Scheduler不监控、跟踪application的状态而言,可以说它是一个纯粹的Scheduler.
当然,它也不保证在application故障或硬件故障时重启那些失败的tasks.
Scheduler基于applications的需求来执行他的调度功能(scheduling function);
它这样做是基于资源容器(resource Container)的抽象概念,资源容器整合了多种元素:内存、cpu、磁盘和网络等资源。
Scheduler有一个可插拔的政策(pluggable policy),负责在各种queues、applications等之间给集群资源分区。当前的CapacityScheduler和FairScheduler就可以作为一些插件的例子。

ApplicationsManager负责接收job的提交,申请第一个container来执行当前application具体的ApplicationMaster并为ApplicationMaster container故障时重启提供服务;每个application的ApplicationMaster负责向Scheduler申请合适的resource containers,并跟踪它们的状态、监控它们的执行。

Hadoop-2.x版本与之前Hadoop-1.x的稳定版本中的MapReduce的API是兼容的。也就是说,所有的MapReduce jobs只需要重新编译,依然可以直接在YARN上运行

YARN经过整合ReservationSystem后,也支持"资源预留",ReservationSystem是一个组件,它允许用户指定在一段时间内使用资源的大致情况和时间约束(例如截止时间),允许预留资源来确保重要jobs的预期执行。ReservationSystem在整个过程中为预留的资源跟踪资源,控制许可,动态地命令scheduler来确保预留被实现。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值