《Hadoop权威指南:大数据的存储与分析》—4.2 YARN与MapReduce 1相比

举报
清华大学出版社 发表于 2019/10/12 17:21:49 2019/10/12
【摘要】 本节书摘来自清华大学出版社《Hadoop权威指南:大数据的存储与分析》一书中第四章,第4.2节,作者是Tom White , 王 海 华 东 刘 喻 吕粤海 译。

4.2  YARNMapReduce 1相比

有时用“MapReduce 1”来指代Hadoop初始版本(版本1及更早期版本)中的MapReduce分布式执行框架,以区别于使用了YARN(Hadoop 2及以后的版本)MapReduce 2

新旧版本MapReduce API之间的区别不同于MapReduce 1执行框架和MapReduce 2执行框架的区别。API具有面向用户的、客户端的特性,并且决定着用户怎样写MapReduce程序( 见附录D);而执行机制只是运行MapReduce程序的不同途径而已。新旧版本APIMapReduce 12运行的四种组合都是支持的。

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

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

YARN中与tasktracker等价的角色是节点管理器。表4-1中对两者之间的映射关系进行了总结。

4-1. MapReduce 1Yarn在组成上的比较

 MapReduce 1

YARN

Jobtracker

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

Tasktracker

节点管理器

Slot

容器

 

YARN的很多设计是为了解决MapReduce 1的局限性。使用YARN的好处包括以下几方面。

可扩展性(Scalability)

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

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


可用性(Availability)

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

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

利用率(Utilization)

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

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

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

多租户(Multitenancy)

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

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

由于Hadoop 2应用广泛且是最新的稳定版本,本书余下的章节中,除非特意声明,MapReduce一般指MapReduce 2。第7章详细探讨了YARNMapReduce的工作机制。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。