|
2.6 多角度理解YARN
K m/ M& d9 O ^下面我从并行编程、 资源管理、 云计算等三个角度帮助读者理解YARN。
3 U! b. s; J4 D6 e" o2 b. K2.6.1 并行编程
8 V6 y2 u, u9 X1 _2 s( c3 W6 y在单机程序设计中, 为了快速处理一个大的数据集, 通常采用多线程并行编程, 如图2-12所示, 大体流程如下: 先由操作系
+ \6 x( N1 b! r% B( v, h. e! h, ~# o3 E统启动一个主线程, 由它负责数据切分、 任务分配、 子线程启动和销毁等工作, 而各个子线程只负责计算自己的数据, 当所有子9 W9 D, C* r) M1 J$ L9 S, G
线程处理完数据后, 主线程再退出。 类比理解, YARN上的应用程序运行过程与之非常相近, 只不过它是集群上的分布式并行编! w3 g$ [2 i* c4 v
程。 可将YARN看做一个云操作系统, 它负责为应用程序启动ApplicationMaster( 相当于主线程) , 然后再由ApplicationMaster负责
" `4 s! j7 }. t数据切分、 任务分配、 启动和监控等工作, 而由ApplicationMaster启动的各个Task( 相当于子线程) 仅负责自己的计算任务。 当所
0 w) g Z" X2 ~有任务计算完成后, ApplicationMaster认为应用程序运行完成, 然后退出。
. `2 Z$ Q$ F" l: t$ _ y6 R2.6.2 资源管理系统
7 |& N. j+ j1 B" q! `2 J资源管理系统的主要功能是对集群中各类资源进行抽象, 并根据各种应用程序或者服务的要求, 按照一定的调度策略, 将资: H6 Q" c6 w$ A
源分配给它们使用, 同时需采用一定的资源隔离机制防止应用程序或者服务之间因资源抢占而相互干扰。 YARN正是一个资源管8 a" A; V! A! {! W' l3 r2 p Y+ G
理系统, 它的出现弱化了计算框架之争, 引入YARN这一层后, 各种计算框架可各自发挥自己的优势, 并由YARN进行统一管5 O+ L9 K0 e7 ?, \
理, 进而运行在一个大集群上。 截至本书出版时, 各种开源系统都在开发YARN版本, 包括MapReduce、 Spark、 Storm、 HBase# y# v. u- J( {& f- S, ~
等。1 X1 r4 z1 j" M
图2-12 从并行编程角度理解YARN! C' W+ l7 |! U$ G' r$ _) D
2.6.3 云计算4 U1 B+ I; h5 l. Z/ e$ m% R
普遍认为, 云计算包括以下几个层次的服务: IaaS、 PaaS和SaaS。 这里所谓的层次, 是分层体系架构意义上的“层次”。
! H3 m; Z, g) ~' j. ^: _( |6 U2 T' pIaaS、 PaaS、 SaaS分别实现在基础设施层、 软件开放运行平台层、 应用软件层。/ z' D3 R x1 G {
IaaS(Infrastructure-as-a-Service): 基础设施即服务。 消费者通过Internet可以从完善的计算机基础设施获得服务。 Iaas通过网络向
$ C7 |: _ v2 V: r) j. @用户提供计算机( 物理机和虚拟机) 、 存储空间、 网络连接、 负载均衡和防火墙等基本计算资源; 用户在此基础上部署和运行各
) T2 w, e) `- p种软件, 包括操作系统和应用程序等。
3 _7 O" m/ d4 U) E# _4 CPaaS(Platform-as-a-Service): 平台即服务。 PaaS是将软件研发的平台作为一种服务, 以SaaS的模式提交给用户。 平台通常包括
; M7 z A- q+ Y7 }7 T7 h/ B9 o操作系统、 编程语言的运行环境、 数据库和Web 服务器等, 用户可以在平台上部署和运行自己的应用。 通常而言, 用户不能管! u5 I% Q; v0 Y9 e& j" Z8 m% k6 l
理和控制底层的基础设施, 只能控制自己部署的应用。0 R9 _7 u( N$ k! x2 m z
SaaS(Software-as-a-Service): 软件即服务。 它是一种通过Internet提供软件的模式, 用户无需购买软件, 而是向提供商租用基
8 ]' R0 G5 y# m; k于Web的软件, 来管理企业经营活动。 云提供商在云端安装和运行应用软件, 云用户通过云客户端( 比如Web 浏览器) 使用软
4 R, }' e! ~; ?1 I: D% e) {件。 * C) R% ^8 O" M" Z4 O# V7 F
# y. ~' o! Q& I5 N
9 R: }) K( @+ D2 V" o" A' ?
|
|