YARN中本身总结的几个关键点

之前在Hadoop 1.0中JobTracker主要完成两项功能:资源的管理和做业控制。在集群规模过大的场景下,JobTracker
存在如下不足:
1)JobTracker 单点故障。
2)JobTracker 承受的访问压力大,影响系统的扩展性。
3)不支持MapReduce以外的计算框架,好比Storm、Spa rk、Flink

所以在YARN的设计中,资源的管理和做业控制是分离开的。取代JobTracker的是ResourceManager、ApplicationMaster两个部分。

  ● Resource Manager是一个全局的资源管理器 ,它作的事情是调度、启动每个Job所属的ApplicationMaster、另外监控ApplicationMaster的存在状况。注:RM只负责监控AM,在AM运行失败时候启动它,RM并不负责AM内部任务的容错,这由AM来完成。(是经过RM中的applicationManager来完成的)
  ● ApplicationMaster是每个Job(不是每一种)都有的一个部分,ApplicationMaster能够运行在ResourceManager之外的机器上,每一个应用程序对应一个ApplicationMaster。。
  ● NodeManager是ResourceManager的在每一个节点的代理,负责 Container 状态的维护,并向RM保持心跳。
  ● 另外,YARN使用Container对资源进行抽象,它封装了某个节点上必定量的资源(如今YARN仅支持CPU和内存两种资源)。当AM向RM申请资源时,RM为AM返回的资源使用Container表示。YARN会为每一个任务分配一个或多个Container,且该任务只能使用该Container中描述的资源。(注:AM也是运行在一个Container中),)目前能够支持多种计算框架运行在YARN上面,好比MapReduce、Storm、Spark、Flink。

说明一下container
Container 是 YARN 中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM为AM返回的资源即是用Container表示的。YARN会为每一个任务分配一个Container,且该任务只能使用该Container中描述的资源。

要使用一个 YARN 集群,首先须要来自包含一个应用程序的客户的请求。

YARN设计的优势
  ● 将资源管理和做业控制分离,减少JobTracker压力
      ○ YARN的设计大大减少了 JobTracker(也就是如今的 ResourceManager)的资源消耗,而且让监测每个 Job 子任务 (tasks) 状态的程序分布式化了,更安全、更优美。
      ○ 老的框架中,JobTracker一个很大的负担就是监控job下的tasks的运行情况,如今,这个部分就扔给ApplicationMaster作了而ResourceManager中有一个模块叫作ApplicationsManager(ASM),它负责监测ApplicationMaster的运行情况。
  ● 可以支持不一样的计算框架

工做原理



mapreduce on yarn



ARN的不足与展望
YARN是一个双层调度器(Two-level scheduler),解决了中央调度器(Monolithic scheduler)的不足(中央调度器典型的表明就是JobTracker),双层调度架构看上去为调度增长了灵活性和并发性,但实际上它保守的资源可见性和上锁算法(使用悲观并发)也限制了灵活性和并发性。第一,保守的资源可见性致使各框架没法感知整个集群的资源使用状况,有空闲资源没法通知排队的进程,容易形成资源的浪费;第二,上锁算法下降了并发性,调度器会将资源分配给一个架构,只有该架构返回资源后,调度器才回将该部分资源分配给其余架构,在第一个分配过程当中,资源至关于被锁住,从而下降了并发性。总结来讲,YARN同其余双层架构的调度器(例如:Mesos)都有的不足为:
  ● 各个应用没法感知集群总体资源的使用状况,只能等待上层调度推送信息。
  ● 资源分配采用轮询、ResourceOffer机制(mesos),在分配过程当中使用悲观锁,并发粒度小。
  ● 缺少一种有效的竞争或优先抢占的机制。
为了改善双层调度系统的的不足,尤为是各个应用没法感知集群总体资源的使用状况和悲观加锁控制致使的并发性不高这两个不足,共享状态调度器(Shared State Scheduler)被愈来愈多的人所重视,其中最具表明性的就是Google的Omega。共享状态调度器在双层调度器的基础上作了改进:
  ● 简化了双层调度器中的全局资源管理器,改成由一个Cell State来记录集群内的资源使用状况,这些使用状况都是共享的数据,以此来达到与全局资源管理器相同的效果。
  ● 全部任务访问共享数据时,采用乐观并发控制方法。
共享调度器也存在不足。例如,当某一资源被不一样任务同时访问时容易产生冲突,访问的任务越多时,冲突次数就会越多,冲突次数越高调度器的性能降低越快,这将影响调度器的工做效率和工做性能。

算法

相关文章
相关标签/搜索