一、关于Yarn的学习

  • 关于Yarn的学习

1、YARN的应用

 

一些分布式计算框架(MapReduce,Spark等等)作为YARN应用运行在集群计算层(YARN)和集群存储层(HDFS和HBase)上。

还有一层应用是建立在上图所示的框架之上。如PIg,Hive和Crunch都是运行在MR、Spark之上的处理框架。

  1. YARN的运行机制

YARN通过两类长期运行的守护进程提供自己的核心服务:管理集群行资源使用的资源管理器(resource manager)、运行在集群中所有节点上且能够启动和监听容器(container)的节点管理器(node manager)。容器用于执行特定应用程序的进程、每个容器都有资源限制(内存、CPU等)。一个容器可以是一个Unix进程,也可以是一个Linux cgroup,取决于YARN的配置。

为了在YARN上运行了一个应用

1客户端联系资源管理器,要求它运行一个applicaton master 进程。

2a/2b资源管理器找到一个能够在容器中启动application master 的节点管理器。

准确的说,application master 一旦运行起来后能够做什么都依赖于应用本身。有可能是在所处的容器中简单运行一个计算,并将结果返回给客户端。

3向资源管理器请求更多的容器,

4a/4b以运行一个分布式计算。

  1. 资源请求

YARN有一个灵活的资源请求模型。当请求多个容器时,可以指定每个容器需要的计算机资源数量(内存和CPU),还可以指定对容器的本地限制要求。

本地化对于确保分布式数据处理算法高效使用集群带宽非常重要,因此,YARN允许一个应用为所申请的容器指定本地限制。本地限制可用于申请位于指定节点或机架,或集群中任何位置(机架外)的容器。

有时本地限制无法被满足,这种情况下要么不分配资源,或者可选择放松限制。例如一个节点由于已经运行了别的容器而无法再启动新的容器,这时如果有应用请求该节点,则YARN将尝试在同一机架中的其他节点上启动一个容器,如果还不行,则会尝试集群中任何一个节点。

通常情况下,当启动一个容器用于处理HDFS数据块(为了MapReduce中运行一个map任务)时,应用将会向这样的节点申请容器:存储该数据块三个复本的节点,或是存储这些复本的机架中的一个节点。如果申请失败,则申请集群中的任意节点。

YARN应用可以在运行中的任意时刻提出资源申请。例如,可以在最开始提出所有的请求,或者为了满足不断变化的应用需要,采取更为动态的方式在需要更多资源提出请求。

Spark采用了上述第一种方式,在集群上启动固定数量的执行器。另一方面,MapReduce则分两步走,在最开始时申请map任务容器,reduce任务容器的启用则放在后期。同样,如果任何任务出现失败,将会另外申请容器以重新运行失败的任务。

  1. 应用生命周期

YARN应用的生命周期差异很大:有几秒的短期应用,也有连续运行几天甚至几个月的长期应用。与其关注应用运行多长时间,不如按照应用到用户运行的作业之间的映射关系对应用进行分类更有意义。最简单的模型是一个用户作业对应一个应用,这也是MapReduce采取的方式。

第二种模型是,多个用户共享一个长期运行的应用。这种应用通常是作为一种协调者的角色在运行。

  1. 构建YARN应用

如果你有兴趣运行一个作业的有向无环图,那么Spark或Tez就很合适;如果对流处理有兴趣,Spark、Samza或Storm能提供帮助。

3、YARN和MapReduce1相比

MapReduce 1 中,有两类守护进程控制着作业执行过程,一个JobTracker及一个或多个TaskTracker。jobtracker通过调度tasktracker上运行任务来协调所有运行在系统上的作业。tasktracker在运行任务的同时将运行进度报告给jobtracker,jobtracker由此记录每项作业任务的整体进度情况。如果其中一个任务失败,jobtracker可以在另一个tasktracker节点上重新调度该任务。

MapReduce 1 中,jobtracker同时负责作业调度(将任务与tasktracker匹配)和任务进度监控(跟踪任务,重启失败或迟缓的任务;记录任务流水,如维护任务计数器的计数)。相比之下,YARN中,这些职责是由不同的实体担负的:它们分别是资源管理器和application master(每个MapReduce一个),jobtracker也负责存储已完成作业的作业历史,但是也可以运行一个作业历史服务器作为一个独立的守护进程来取代jobtracker。在YARN中,与之等价的角色是时间轴服务器(timeline server),它主要用于存储应用历史。

YARN中与tasktracker等价的角色是节点服务器。

MapReduce 1

YARN

JobTracker

资源管理器、 application master、时间轴服务器

TaskTracker

节点管理器

Slot

容器

 

使用YARN的好处:

  1. 可扩展性availability

与Map Reduce 1相比,YARN可以在更大规模的集群上运行。当节点数达到4000,任务数达到40000时,MapReduce 1会遇到瓶颈,瓶颈源于jobtracker必须同时管理作业和任务这样一个事实。YARN利用其资源管理器和application master分离的架构优点克服个这个局限性,可以扩展到将近10000个节点和100000个任务。

与jobtracker相比,一个应用的每个实例(这个指一个MapReduce作业)都对应一个专门的application master,该管理进程(master)在应用的持续期间运行。这个模型实际上与初始的Google MapReduce更为接近。论文中描述了如何启动一个管理(master)进程以协调运行在一系列工作(worker)上的map和reduce任务。

  1. 可用性scalability

当服务守护进程失败后,通过为另一个守护进程复制接管工作所需的状态以便其继续提供服务,从而可以获得高可用性(HA availability)。然而,jobtracker内存中大量快速变化的复杂状态(例如,每个任务状态每几秒会更新一次)使得改进jobtracker服务获得高可用性非常困难。

由于YARN中jobtracker在资源管理器和application master之间进行了职责划分,高可用的服务随之成为一个分而治之问题:先为资源管理器提供高可用性,再为YARN应用(针对每个应用)提供高可用性。实际上,对于资源管理器和application master,Hadoop 2 都支持MapReduce 作业的高可用性。

  1. 利用率Utilization

MapReduce 1中,每个tasktracker都配置有若干固定长度的slot,这些slot是静态分配的,在配置的时候就被划分为map slot和reduce slot。一个map slot仅能用于运行一个map任务,同样,一个reduce slot仅能用于运行一个reduce任务。

YARN中,y一个节点管理器管理一个资源池,而不是指定的固定数目的slot。YARN上运行的MapReduce不会出现由于集群仅有map slot可用导致reduce任务必须等待的情况,而MapReduce 1 则会有这样的问题。如果能够获得运行任务的资源,那么应用就会正常进行。

更进一步,YARN中的资源是精细化管理的,这样一个应用能够按需请求资源,而不是请求一个不可分割的,对于特定的任务而言可能贵太大(浪费资源)或太小(可能会导致失败)的slot。

  1. 多租户multienancy

在某种程度上,可以说YARN的最大优点在于向MapReduce以外的其他类型分布式应用开放了Hadoop。MapReduce仅仅是许多YARN应用的一种。

用户甚至可以在同一个YARN集群上运行不同版本的MapReduce,这使得升级MapReduce的过程更好管理(注意,MapReduce的一些组件,例如作业历史服务器和shuffle句柄,和YARN一样,仍然需要在集群范围内升级。)

4、YARN中调度

理想情况下,YARN应用发出的资源请求应该立刻给予满足。然而现实中资源是有限的,在一个繁忙的集群上,一个应用经常需要等待才能得到所需资源。YARN调度器的工作就是根据既定策略为应用分配资源。调度通常是一个难题,并且没有一个所谓”最好“的策略,这也是为什么YARN提供了多种调度器和可配置策略给我们。

  1. 调度选项

YARN中有三种调度器可用:FIFO调度器(FIFO Scheduler)、容量调度器(Capacity Scheduler)、公平调度器(Fair Scheduler)。

FIFO调度器将应用放置在一个队列中,然后按照提交的顺序(先进先出)运行应用。首先为队列中第一个应用的请求分配资源,第一个应用的请求被满足后依此为队列中下一个应用服务。

FIFO调度器的优点是,简单易懂,不需要任何配置,但是不适合共享集群。大的应用会占用集群中的所有资源,所以每个应用必须等待直到轮到自己运行。在一个共享集群中,更适合使用容量调度器或公平调度器。这两种调度器都允许长时间运行的作业能及时完成,同时也允许正在进行较小临时查询的用户能够在合理时间内

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值