|
2.5 YARN 工作流程5 G2 i5 X' R# Y% D% _% K* g) ]' J- T
运行在YARN上的应用程序主要分为两类: 短应用程序和长应用程序, 其中, 短应用程序是指一定时间内( 可能是秒级、 分
4 C, W- D5 ]% J! R2 m3 l钟级或小时级, 尽管天级别或者更长时间的也存在, 但非常少) 可运行完成并正常退出的应用程序, 比如MapReduce作业( 将在
: \+ O( }5 M2 r# H# q! T第8章介绍) 、 Tez DAG作业( 将在第9章介绍) 等, 长应用程序是指不出意外, 永不终止运行的应用程序, 通常是一些服务, 比" q9 g8 N1 x1 R% n! ^
如StormService( 主要包括Nimbus和Supervisor两类服务) , HBase Service( 包括Hmaster和RegionServer两 类服务) [21] 等, 而它们
% w- o- j1 G9 k! U本身作为一个框架提供了编程接口供用户使用。 尽管这两类应用程序作用不同, 一类直接运行数据处理程序, 一类用于部署服务1 k% y E$ J' u5 r; U
( 服务之上再运行数据处理程序) , 但运行在YARN上的流程是相同的。7 q! D ~0 n! e' {9 v- x
当用户向YARN中提交一个应用程序后, YARN将分两个阶段运行该应用程序: 第一个阶段是启动ApplicationMaster; 第二个; `, {% @" i* P9 V! u
阶段是由ApplicationMaster创建应用程序, 为它申请资源, 并监控它的整个运行过程, 直到运行完成。 如图2-11所示, YARN的工7 R# V0 ^& s4 K7 }& T) c( U- O7 D$ H
作流程分为以下几个步骤:
* k! b- L# Z1 _0 R4 ~( P步骤1 用户向YARN中提交应用程序, 其中包括ApplicationMaster程序、 启动ApplicationMaster的命令、 用户程序等。
# {; R% c6 _3 _2 x* z& Q步骤2 ResourceManager为该应用程序分配第一个Container, 并与对应的Node-Manager通信, 要求它在这个Container中启动应
8 Z; n' U) d5 D t, A用程序的ApplicationMaster。5 W. n8 F* T6 x5 \: W
步骤3 ApplicationMaster首先向ResourceManager注册, 这样用户可以直接通过ResourceManage查看应用程序的运行状态, 然! b2 `5 G3 X6 }0 s, M3 y& z9 N
后它将为各个任务申请资源, 并监控它的运行状态, 直到运行结束, 即重复步骤4~7。. R0 S* ?' S& u& @! M6 ]0 b/ x6 c
步骤4 ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请和领取资源。
2 T/ M9 X- @ B$ ~+ z" V步骤5 一旦ApplicationMaster申请到资源后, 便与对应的NodeManager通信, 要求它启动任务。4 N2 u$ B2 _- i
步骤6 NodeManager为任务设置好运行环境( 包括环境变量、 JAR包、 二进制程序等) 后, 将任务启动命令写到一个脚本
s1 t+ t7 ~5 L. D中, 并通过运行该脚本启动任务。
+ U g" D1 N9 X7 E1 N7 z- U3 g步骤7 各个任务通过某个RPC协议向ApplicationMaster汇报自己的状态和进度, 以让ApplicationMaster随时掌握各个任务的运
$ i( C9 j: }6 p' L- ]行状态, 从而可以在任务失败时重新启动任务。
# V1 C( N5 @/ A. A+ b" ~ G4 }6 o在应用程序运行过程中, 用户可随时通过RPC向ApplicationMaster查询应用程序的当前运行状态。
6 }1 K5 { h$ r步骤8 应用程序运行完成后, ApplicationMaster向ResourceManager注销并关闭自己。
$ l" U) h8 A% u9 D+ l0 V图2-11 Apache YARN的工作流程2 g+ l- D+ k: E3 H9 P0 [4 C
[21] 关于"HBase On YARN"可阅读http://hortonworks.com/blog/hoya-hbase-on-yarn-application-architecture/。
% O; b2 ]! O' O i7 l ~: Z2.6 多角度理 ' E' m, ^& R" x- F
0 G. J7 L# ^' g8 R+ Y- `- v/ P1 [8 s, n7 E: ^$ ]8 q
|
|