Yarn系统架构与原理详解 | 青训营笔记

184 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的的第16天

Yarn介绍

image.png

Hadoop YARN 是 apache Software Foundation Hadoop 的子项目,为分离 Hadoop2.0 资源管理和计算组件而引入。YARN 的诞生缘于存储于 HDFS 的数据需要更多的交互模式,不单单是 MapReduce 模式。Hadoop2.0 的 YARN 架构提供了更多的处理框架,比如 spark 框架,不再强迫使用 MapReduce 框架。从 hadoop2.0 的架构图可以看出,YARN 承担着原本由 MapReduce 承担的资源管理的功能,同时将这部分的功能打包使得他们可以被新的数据处理引擎使用。这也同时简化了 MapReduce 的流程,使得 MapReduce 专注的将数据处理做到最好。使用 YARN,可以用共同的资源管理,在 Hadoop 上跑很多应用程序。目前,很多机构已经开发基于 YARN 的应用程序。

Yarn [架构]

YARN 的架构还是经典的主从(master/slave)结构,如下图所示。大体上看,YARN 服务由一个 ResourceManager(RM)和多个 NodeManager(NM)构成,ResourceManager 为主节点(master),NodeManager 为从节点(slave)

image.png 在 YARN 体系结构中,全局 ResourceManager 作为主守护程序运行,该仲裁程序在各种竞争应用程序之间仲裁可用的群集资源。ResourceManager 跟踪群集上可用的活动节点和资源的数量,并协调用户提交的应用程序应获取这些资源的时间和时间。ResourceManager 是具有此信息的单个进程,因此它可以以共享,安全和多租户的方式进行分配(或者更确切地说,调度)决策(例如,根据应用程序优先级,队列容量,ACL,数据位置等)。

当用户提交应用程序时,将启动名为 ApplicationMaster 的轻量级进程实例,以协调应用程序中所有任务的执行。这包括监视任务,重新启动失败的任务,推测性地运行慢速任务以及计算应用程序计数器的总值。这些职责先前已分配给所有工作的单个 JobTracker。ApplicationMaster 和属于其应用程序的任务在 NodeManagers 控制的资源容器中运行。

ApplicationMaster 可以在容器内运行任何类型的任务。例如,MapReduce ApplicationMaster 请求容器启动 map 或 reduce 任务,而 Giraph ApplicationMaster 请求容器运行 Giraph 任务。您还可以实现运行特定任务的自定义 ApplicationMaster,并以此方式创建一个闪亮的新分布式应用程序框架,该框架可以更改大数据世界。我鼓励您阅读 Apache Twill,它旨在简化编写位于 YARN 之上的分布式应用程序。

一个可以运行任何分布式应用程序的集群 ResourceManager,NodeManager 和容器不关心应用程序或任务的类型。所有特定于应用程序框架的代码都被简单地移动到其 ApplicationMaster,以便 YARN 可以支持任何分布式框架,只要有人为它实现适当的 ApplicationMaster。由于这种通用方法,运行许多不同工作负载的 Hadoop YARN 集群的梦想成真。想象一下:数据中心内的单个 Hadoop 集群可以运行 MapReduce,Giraph,Storm,Spark,Tez / Impala,MPI 等。

核心组件:

image.png