|
2.3 YARN 基本设计思想
; u- k. h) X2 b6 d e本节我们通过对比两代MapReduce的基本框架和编程模型来帮助读者理解YARN的基本设计思想。7 \. Y$ x: ]& f6 y7 y- Q' S
2.3.1 基本框架对比5 a* j9 P! l3 x# w. o# ]
在Hadoop 1.0中, JobTracker由资源管理( 由TaskScheduler模块实现) 和作业控制( 由JobTracker中多个模块共同实现) 两部分
) L; C2 i& j z4 G, o& _3 y组成, 具体如图2-6所示。 当前Hadoop MapReduce之所以在可扩展性、 资源利用率和多框架支持等方面存在不足, 正是由于
' S* N+ ]: \) W( Q* [Hadoop对JobTracker赋予的功能过多而造成负载过重。 此外, 从设计角度上看, Hadoop未能够将资源管理相关的功能与应用程序
. U3 _ r j) o: L相关的功能分开, 造成Hadoop难以支持多种计算框架。
$ s/ p" P7 f9 E. Z: g图2-6 第一代MapReduce框架基本架构# r# C4 O, M% N1 W
下一代MapReduce框架的基本设计思想是将JobTracker的两个主要功能, 即资源管理和作业控制( 包括作业监控、 容错
) w) V9 z- b9 [+ b等) , 分拆成两独立的进程, 如图2-7所示。 资源管理进程与具体应用程序无关, 它负责整个集群的资源( 内存、 CPU、 磁盘
0 I0 g, B0 c5 d7 c( k等) 管理, 而作业控制进程则是直接与应用程序相关的模块, 且每个作业控制进程只负责管理一个作业。 这样, 通过将原有3 s1 ~) I7 {2 s' ^: j' z/ Z! f! t
JobTracker中与应用程序相关和无关的模块分开, 不仅减轻了JobTracker负载, 也使得Hadoop支持更多的计算框架。9 v) X. v* t* Z2 w3 R0 |* d
图2-7 下一代MapReduce框架基本架构
4 E# L% r; b: ]* _) f) Z6 X5 V% W/ A$ m) Y从资源管理角度看, 下一代MapReduce框架实际上衍生出了一个资源统一管理平台YARN, 它使得Hadoop不再局限于仅支持2 m0 f& _6 \; |) }- r+ g# a0 R2 X2 X, E
MapReduce一种计算模型, 而是可无限融入多种计算框架, 且对这些框架进行统一管理和调度。! V0 L8 E: {" m$ h2 x# t
2.3.2 编程模型对比) M6 k" x2 @' l6 a% v4 o
前面提到MRv1主要由编程模型( 由新旧API组成) 、 数据处理引擎( 由MapTask和ReduceTask组成) 和运行时环境( 由一个3 T5 C% S# e; D8 Y( s5 ~) U
JobTracker和若干个TaskTracker组成) 三部分组成, 为了保证编程模型的向后兼容性, MRv2重用了MRv1中的编程模型和数据处
7 J( _1 Q% }% b& R# C/ X理引擎, 但运行时环境被完全重写, 具体如下。* Q* K2 O3 ~$ X+ p4 \' D6 U6 m) H
❑编程模型与数据处理引擎: MRv2重用了MRv1中的编程模型和数据处理引擎。 为了能够让用户应用程序平滑迁移到; l7 F: M6 b* h! i
Hadoop 2.0中, MRv2应尽可能保证编程接口的向后兼容性, 但由于MRv2本身进行了改进和优化, 它在向后兼容性方面存在少量
" A( c& V2 C9 i5 K' Y- W5 A) U问题。 MapReduce应用程序编程接口有两套, 分别是新API( mapred) 和旧API ( mapredue) [17] , MRv2可做到以下兼容性: 采用2 U/ n6 h6 ]$ Q' Z" s
MRv1旧API编写的应用程序, 可直接使用之前的JAR包将程序运行在MRv2上; 但采用MRv1新API编写的应用程序则不可以, 需9 [# I+ y% K+ R
要使用MRv2编程库重新编译并修改不兼容的参数和返回值, 具体将在第8章介绍。
9 g; @" R4 u; B# R* k❑运行时环境: MRv1的运行时环境主要由两类服务组成, 分别是JobTracker和TaskTracker。 其中, JobTracker负责资源和任
3 {" f! K0 Z6 R- Z! p务的管理与调度, TaskTracker负责单个节点的资源管理和任务执行。 MRv1将资源管理和应用程序管理两部分混杂在一起, 使得
: K% l& n+ s, s. N1 X p# G1 w1 x/ U它在扩展性、 容错性和多框架支持等方面存在明显缺陷。 而MRv2则通过将资源管理和应用程序管理两部分剥离开, 分别由7 L0 Q9 A. k1 c. _% f
YARN和ApplicationMaster负责, 其中, YARN专管资源管理和调度, 而ApplicationMaster则负责与具体应用程序相关的任务切分、9 I1 j9 K1 o' a5 F& A$ v9 @
任务调度和容错等, 具体如图2-8所示。% V) j& K1 p# @! H/ {- I3 L T1 l M
图2-8 下一代MapReduce框架基本架构
* @! |* m6 q: W, q8 ~% u ][17] MapReduce新旧API介绍可参考《 Hadoop技术内幕: 深入解析MapReduce架构设计与实现原理》 一书中的第3 章。
' M6 N; I6 Y7 ]
/ O# `1 M# X. d1 Q/ \9 m' F; j5 h, K5 v+ C
|
|