YARN与MapReduce 1

这篇博客来说一下YARN.

YARN是在Hadoop 2中加入的新特性,本来是为了改善Hadoop 1中MapReduce的实现,但是发现其有足够的通用性:可以应用于很多分布式计算框架.

这里暂时把Hadoop 1中的MapReduce成为MapReduce 1,来看看它与YARN的对比.

在Hadoop 2中,我们用start-dfs.sh启动HDFS,start-yarn.sh启动YARN.运行完start-yarn.sh后,可以看到增加了1或2个进程.集群中的每台机器都有一个NodeManager(节点管理器),master机器上有RescourceManager(资源管理器).全部启动完成后,master上运行jps命令,应该至少看到5个进程,而slave机器上运行jps,应该至少看到3个进程:

master机器slave机器
JpsJps
NamenodeDatanode
DatanodeNodeManager
ResourceManager 
NodeManager 

而在MapReduce 1中,是另外两个进程:Jobtracker,Tasktracker.Tasktracker由Jobtracker调度,Tasktracker执行任务,同时把进度报告给Jobtracker,Jobtracker记录每项作业的整体进度情况.如果某个作业失败,就在另一个Tasktracker重新调度该任务.

利用率

在MapReduce 1中,每个Tasktracker都配置有若干固定的Slot,值得一提的是,这些Slot是静态分配的:配置的时候就划分为map slot与reduce slot.map slot只能运行map任务,reduce slot只能运行reduce任务,而且所分配的资源也是固定的,意味着有的任务可能获得了超过需求的资源,有的任务由于未获得足够的资源而崩溃.还有可能出现集群中仅有map slot可用而导致reduce任务必须等待slot的情况.

在YARN中,这些弊端都得到了治理:由资源管理器管理一个资源池,任务按需请求资源,而不是请求固定量的资源.

可扩展性

MapReduce 1中,Jobtracker同时负责多项工作:作业调度,任务进度监控(其中还包括跟踪任务,重启失败或运行迟缓的任务,记录任务流水,维护计数器计数.),以及存储已完成作业的作业历史.容易想到,Jobtracker负责了太多的工作,一旦集群中的任务过多,就容易形成瓶颈:

当节点数达到4000,任务数达到40000时,MapReduce 1就会遇到可扩展性瓶颈,瓶颈源于Jobtracker必须同时管理作业和任务这样一个事实.

与此相比,在YARN中,Jobtracker这些任务由不同的实体负担:资源管理器和application master,时间轴服务器.而Tasktracker则等同于节点管理器.

MapReduce1YARN

Jobtracker

资源管理器,application master,时间轴服务器
Tasktracker节点管理器
Slot容器

 

由于原本由一台机器负责的任务被分为三个实体分别执行,所以YARN的扩展性就大为提高:

YARN利用其资源管理器和application master分离的架构优点克服了这个局限性:可以扩展到面向将近10000个节点和100000个任务.

可用性

前面提到Hadoop集群是由我们都可以买到的硬件构成的,所以难免会出现故障,但是大型集群条件下总不能一台机器崩溃就把整个任务结束吧.为此Hadoop提供了多种高可用性(HA)措施,以便由新的机器接管故障机器的任务,如集群中最关键的Namenode.

在Jobtracker中,由于内存中的状态复杂多变(不停地监控每个任务的状态,以及其他许多任务),所以难以实现高可用性:备机也需要同时更新如此巨量的信息.

而在YARN中,由于Jobtracker的职责被分为多个实体,所以高可用性随之成为一个分而治之问题:先为负责总的调度的资源管理器提供高可用性,再为YARN应用提供高可用性,实现高可用性的难度比Jobtracker小得多.前面关于MapReduce作业运行过程中也提到,如果一个节点上的任务失败,YARN会将其分配至一个新的节点运行.

多租户

前面提到不止MapReduce可以使用YARN,其他分布式应用也可以使用YARN.这样也就使得YARN的应用范围更为广泛.

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值