• 沒有找到結果。

Yarn 与其他组件的关系

5.29 YARN

5.29.3 Yarn 与其他组件的关系

Yarn 和 Spark 组件的关系

Spark的计算调度方式,可以通过Yarn的模式实现。Spark共享Yarn集群提供丰富的计 算资源,将任务分布式的运行起来。Spark on Yarn分两种模式:Yarn Cluster和Yarn Client。

● Yarn Cluster模式

运行框架如图5-129所示。

5-129 Spark on yarn-cluster 运行框架

Spark on yarn-cluster实现流程:

a. 首先由客户端生成Application信息,提交给ResourceManager。

b. ResourceManager为Spark Application分配第一个

Container(ApplicationMaster),并在该Container上启动Driver。

c. ApplicationMaster向ResourceManager申请资源以运行Container。

ResourceManager分配Container给ApplicationMaster,ApplicationMaster 和相关的NodeManager通讯,在获得的Container上启动Executor,

Executor启动后,开始向Driver注册并申请Task。

d. Driver分配Task给Executor执行。

e. Executor执行Task并向Driver汇报运行状况。

● Yarn Client模式

运行框架如图5-130所示。

5-130 Spark on yarn-client 运行框架

Spark on yarn-client实现流程:

说明

在yarn-client模式下,Driver部署在Client端,在Client端启动。yarn-client模式下,不兼 容老版本的客户端。推荐使用yarn-cluster模式。

a. 客户端向ResourceManager发送Spark应用提交请求,ResourceManager为 其返回应答,该应答中包含多种信息(如ApplicationId、可用资源使用上限和 下限等)。Client端将启动ApplicationMaster所需的所有信息打包,提交给 ResourceManager上。

b. ResourceManager收到请求后,会为ApplicationMaster寻找合适的节点,并 在该节点上启动它。ApplicationMaster是Yarn中的角色,在Spark中进程名 字是ExecutorLauncher。

c. 根据每个任务的资源需求,ApplicationMaster可向ResourceManager申请一 系列用于运行任务的Container。

d. 当ApplicationMaster(从ResourceManager端)收到新分配的Container列 表后,会向对应的NodeManager发送信息以启动Container。

ResourceManager分配Container给ApplicationMaster,ApplicationMaster 和相关的NodeManager通讯,在获得的Container上启动Executor,

Executor启动后,开始向Driver注册并申请Task。

说明

正在运行的container不会被挂起释放资源。

e. Driver分配Task给Executor执行。Executor执行Task并向Driver汇报运行状 况。

Yarn 和 MapReduce 的关系

MapReduce是运行在Yarn之上的一个批处理的计算框架。MRv1是Hadoop 1.0中的 MapReduce实现,它由编程模型(新旧编程接口)、运行时环境(由JobTracker和

TaskTracker组成)和数据处理引擎(MapTask和ReduceTask)三部分组成。该框架在 扩展性、容错性(JobTracker单点)和多框架支持(仅支持MapReduce一种计算框 架)等方面存在不足。MRv2是Hadoop 2.0中的MapReduce实现,它在源码级重用了 MRv1的编程模型和数据处理引擎实现,但运行时环境由Yarn的ResourceManager和 ApplicationMaster组成。其中ResourceManager是一个全新的资源管理系统,而 ApplicationMaster则负责MapReduce作业的数据切分、任务划分、资源申请和任务调 度与容错等工作。

Yarn 和 ZooKeeper 的关系

ZooKeeper与Yarn的关系如图5-131所示。

5-131 ZooKeeper 与 Yarn 的关系

1. 在系统启动时,ResourceManager会尝试把选举信息写入ZooKeeper,第一个成 功写入ZooKeeper的ResourceManager被选举为Active ResourceManager,另一 个为Standby ResourceManager。Standby ResourceManager定时去ZooKeeper 监控Active ResourceManager选举信息。

2. Active ResourceManager还会在ZooKeeper中创建Statestore目录,存储 Application相关信息。当Active ResourceManager产生故障时,Standby ResourceManager会从Statestore目录获取Application相关信息,恢复数据。

Yarn 和 Tez 的关系

Hive on Tez作业信息需要Yarn提供TimeLine Server能力,以支持Hive任务展示应用程 序的当前和历史状态,便于存储和检索。