YARN设计理念与基本架构

问题
1、MRV1设计存在的问题
2、MRV2中YARN带来的好处
3、YARN基本设计思想

1、MRV1设计存在的问题
由于MRV1在扩展性、可靠性、资源利用率和多框架等方面存在明显不足,于是诞生了下一代MapReduce计算框架MRV2先简单了解MRV1的一些局限性,这可概括为一下几个方面

扩展性差:在MRV1中,jobtracker同时兼备了资源管理和作业控制两个功能,这成为系统的一个最大瓶颈,严重制约了hadoop集群扩展性。

可靠性差: MRV1采用了master/slave结构,其中,master存在单点故障问题,一旦它出现故障将导致整个集群不可用

资源利用率低: MRV1采用了基于槽位的资源分配模型,槽位是一种粗粒度的资源划分单位,通常一个任务不会用完槽位对应的资源,且其他任务也无法使用这些空闲资源,此外,hadoop将槽位分为map slot和reduce slot两种,且不允许他们之间共享,常常会导致一种槽位分为map slot和reduce slot两种,且不允许他们之间共享,常常会导致一种槽位资源紧张而另一种闲置(比如一个作业刚刚提交时只会运行map task,此时reduce slot闲置)

无法支持多种计算框架:随着互联网高速发展,mapreduce这种基于磁盘的离线计算框架已经不能满足应用要求,从而出现了一些新的计算框架,包括内存计算框架、流式计算框架和迭代式计算框架等,而MRV1不能支持多种计算框架并存。

2、MRV2中YARN带来的好处
为了克服以上几个缺点,apache开始尝试对hadoop进行升级改造,进而诞生了下一代Mapreduce计算框架MRV2,正是由于MRV2将资源管理功能抽象成了一个独立的通用系统YARN。
相比于“一个计算框架一个集群”的模式,共享集群的模式存在多种好处:

资源利用率高:如果每个框架一个集群,则往往由于应用程序数量和资源需求的不均衡,使得在某段时间内,有些计算框架的集群资源紧张,而另外一些集群资源空闲。共享集群模式则通过多种框架共享资源,使得集群中的资源得到更加充分的利用

运维成本低:如果采用“一个框架一个集群”的模式,则可能需要多个管理员管理这些集群,进而增加运维成本,而共享模式通常需要少数管理员即可完成多个框架的统一管理。

数据共享:随着数据量的暴增,跨集群间的数据移动不仅需花费更长的时间,且硬件成本也会大大增加,而共享集群模式可让多中框架共享数据和硬件资源,将大大减少数据移动带来的成本。

YARN基本设计思想
1、基本框架对比
在hadoop1中,jobtracker由资源管理(由taskScheduler模块实现)和作业控制(由jobtracker中多个模块共同实现)两部分组成,当前hadoop mapreduce之所以在可扩展性、资源利用率和多框架支持等方面存在不足,正是由于hadoop对jobtracker赋予的功能过多而造成负载过重,此外,从设计角度上看,hadoop未能够将资源管理相关的功能与应用程序相关的功能分开,造成hadoop难以支持多种计算框架。
YARN设计理念与基本架构_第1张图片
第一代mapreduce框架基本架构

下一代Mapreduce框架的基本设计思想是将JobTracker的两个主要功能,即资源管理和作业控制(包括作业监控、容错等),分拆成两个独立的进程,资源管理进程与具体应用程序无关,它负责整个集群的资源(内存、CPU、磁盘等)管理,而作业控制进程则是直接与应用程序相关的模块,且每个作业控制进程只负责管理一个作业,这样通过将原有jobtracker中与应用程序相关和无关的模块分开,不仅减轻了jobtracker负载,也使得hadoop支持更多的计算框架
YARN设计理念与基本架构_第2张图片
下一代mapreduce框架基本架构

从资源管理角度看,下一代mapreduce框架实际上衍生出了一个资源统一管理平台YARN,它使得hadoop不再局限于仅支持mapreduce一种计算框架,而是可无限融入多种计算框架,且对这些框架进行统一管理和调度

编程模型对比
1、编程模型与数据处理引擎: MRV2重用了MRV1中的编程模型和数据处理引擎,为了能够让用户应用程序能够平滑迁移到hadoop2中,mapreduce应用程序编程接口有两套,分别是新API(ampred)和久API(mapreduce)
2、运行时环境: MRV1的运行环境主要由两类服务组成,分别是jobtracker和tasktracker,其中jobtracker负责资源和任务的管理与调度,tasktracker负责单个节点的资源管理和任务执行。MRV1将资源管理和应用程序管理两部分混杂在一起,使得它在扩展性、容错性和多框架支持等方面存在明显缺陷。而MRV2则通过将资源管理和应用程序管理两部分剥离开,分别由YARN和ApplicationMaster负责,其中,YARN专管资源管理和调度,而ApplicationMaster则负责与具体应用程序相关的任务切分、任务调度和容错等,

YARN设计理念与基本架构_第3张图片
第一代框架和第二代框架对比

你可能感兴趣的:(hadoop)