揭秘Apache Hadoop YARN,第1部分:集群和YARN基础[译]

YARN (Yet Another Resource Negotiator)是Apache Hadoop生态系统的资源管理层。 YARN已经发布了好久,但许多用户仍然有关于YARN是什么,以及它的工作原理的基本问题。这个系列的文章需要达成以下目标:

  • 对YARN的构成有基本的了解
  • 图示MapReduce作业如何使用YARN计算模型。 (注意:虽然Apache Spark也可与YARN集成,但本系列将专门介绍MapReduce。有关Spark on YARN的信息,请参阅此帖。)
  • 介绍YARN调度程序如何工作并提供调度程序配置的示例

该系列包含以下部分:

  • Part 1: 集群和YARN基础
  • Part 2: 全局配置基础
  • Part 3: 调度概念
  • Part 4: 公平调度队列基础
  • Part 5: 使用公平调度队列属性

在这篇最初的文章中,我们将介绍YARN的基本原理,YARN在集群上运行进程的方式类似于操作系统在单计算机上运行进程的方式。后续部分将每隔几周发布一次。

Cluster Basics (Master/Worker)

主机(host)是Hadoop的一个数据,表示一台计算机(也称为节点,YARN的术语)的Hadoop术语。集群是由高速本地网络连接的两个或更多个主机。两个或更多主机 (也称为YARN术语中的节点)- 通过高速本地网络连接的计算机的Hadoop术语称为集群。从Hadoop的角度来看,集群中可以有几千个主机。

在Hadoop中,集群中有两种类型的主机。

Figure 1: Master host and Worker hosts
Figure 1: Master host and Worker hosts

从概念上讲,Master主机是客户端程序的通信点。Master将工作发送到集群的worker主机。(在Hadoop中,集群在技术上可以是单个主机,这种设置通常用于调试或简单测试,不推荐用于典型的Hadoop工作负载)。

YARN Cluster Basics (Master/ResourceManager, Worker/NodeManager)

在YARN群集,有两种类型的host:

  • ResourceManager是与客户端通信的主守护程序,跟踪群集上的资源,并将任务分配给NodeManager来协调工作
  • NodeManager是一个Worker端守护进程,它启动和跟踪在工作主机上生成的进程。

Figure 2: Master host with ResourceManager and Worker hosts with NodeManager
Figure 2: Master host with ResourceManager and Worker hosts with NodeManager

YARN Configuration File

YARN配置文件是一个XML文件。此文件放置在集群中每个主机上,用于配置ResourceManager和NodeManager。默认情况下,此文件命名为yarn-site.xml。此文件中用于配置YARN的基本属性将在后面的部分中介绍。

YARN Requires a Global View

YARN当前定义了两类资源,vcore和memory。每个NodeManager跟踪其自己的本地资源,并将其资源配置传达给ResourceManager,ResourceManager保存集群的可用资源的运行总计。通过跟踪总计,ResourceManager知道如何在请求时分配资源。 (Vcore在YARN中有一个特殊的含义,你可以把它简单地看作一个“CPU核心的使用份额”。如果你期望你的任务减少CPU密集型(有时称为I / O密集型),你可以设置vcores与物理核心的比率高于1,以最大限度地利用硬件资源。)

Figure 3: ResourceManager global view of the cluster
Figure 3: ResourceManager global view of the cluster]

Containers

容器是一个重要的YARN概念。您可以将容器视为在YARN集群一个请求的资源。当前容器包含请求的vcore和内存,如下图左所示。

Figure 4: Container as a hold (left), and container as a running process (right)

一旦在主机上授权这些资源的申请,NodeManager将启动一个称为Task的进程。上图右侧显示作为容器内部的进程运行的任务。 (第3部分将更详细地介绍YARN如何计划特定主机上的容器。)

YARN Cluster Basics (Running Process/ApplicationMaster)

本节会有两个新的YARN术语:

  • application是由一个或多个任务组成的YARN客户端程序(见Figure 5)。
  • 对于每个正在运行的应用程序,一个称为ApplicationMaster的特殊代码用于协调YARN集群上的任务。 ApplicationMaster是应用程序启动后运行的第一个进程。

在YARN集群上运行任务的应用程序由以下步骤组成:

1.应用程序启动并与群集的ResourceManager对话:

Figure 5: Application starting up before tasks are assigned to the cluster
Figure 5: Application starting up before tasks are assigned to the cluster

2.ResourceManager代表应用程序发出单个容器请求:

Figure 6: Application + allocated container on a cluster
Figure 6: Application + allocated container on a cluster

3.ApplicationMaster开始在该容器中运行:

Figure 7: Application + ApplicationMaster running in the container on the cluster
Figure 7: Application + ApplicationMaster running in the container on the cluster

4.ApplicationMaster从ResourceManager请求分配用于为应用程序运行任务的后续容器。这些任务与在步骤3中分配的ApplicationMaster进行大多数状态通信)

Figure 8: Application + ApplicationMaster + task running in multiple containers running on the cluster
Figure 8: Application + ApplicationMaster + task running in multiple containers running on the cluster

5.所有任务完成后,ApplicationMaster退出。最后一个容器从集群中取消分配

6.应用程序客户端退出。 (在一个容器中启动的ApplicationMaster更具体地称为托管AM。不受管理的ApplicationMasters在YARN的控制之外运行,Llama是非托管AM的示例。)

MapReduce Basics

在MapReduce范例中,应用程序由Map任务和Reduce任务组成。Map task与 Reduce task与YARN的任务排列非常清楚
Figure 9: Application + Map tasks + Reduce tasks
Figure 9: Application + Map tasks + Reduce tasks

Putting it Together: MapReduce and YARN

Figure 10 说明了map任务和reduce任务在YARN中的调度过程。

Figure 10: Merged MapReduce/YARN Application Running on a Cluster
Figure 10: Merged MapReduce/YARN Application Running on a Cluster

在MapReduce应用程序中,有多个map任务,每个任务在集群中某个工作主机上的容器中运行。类似地,有多个reduce任务,每个都在工作主机上的容器中运行。

在YARN端,ResourceManager,NodeManager和ApplicationMaster一起工作来管理集群的资源,并确保任务以及相应的应用程序完全完成。

Conclusion

总结本节中提出的重要概念:

1.集群由两个或多个由内部高速网络连接的主机组成。Master主机是用于控制集群。Worker主机用于计算。
2.在运行YARN的集群中,Master进程称为ResourceManager,Worker进程称为NodeManager。
3.YARN的配置文件名为yarn-site.xml。在群集中的每个主机上都有一个副本。它是ResourceManager和NodeManager正确运行所必需的。 YARN跟踪集群上的两个资源,vcore和memory。每个主机上的NodeManager跟踪本地主机的资源,ResourceManager跟踪集群的总数。
4.YARN中的container保存(hold)集群上的资源。 YARN决定container空间的大小。一旦container被分配,那些资源就可被container使用。
5.YARN中的应用程序包括三个部分:
–1)应用程序客户端,这是程序在集群上运行的方式。
–2)ApplicationMaster,它为YARN中执行应用程序进行执行分配。
–3)在YARN分配的容器中执行实际工作(在进程中运行)的一个或多个任务
6.MapReduce应用程序包括Map任务和Reduce任务。
7.在YARN集群中运行的MapReduce应用程序看起来非常像MapReduce应用程序模式,但是添加了一个ApplicationMaster用作YARN对它们管理。

Next Time…

第2部分将涵盖计算集群配置的YARN属性。同时,请进一步阅读:

Ray Chiang是Cloudera的软件工程师。

Dennis Dawson是Cloudera的高级技术撰稿人。

原文地址Untangling Apache Hadoop YARN, Part 1: Cluster and YARN Basics

打赏支持:支付宝/微信。如果你觉得我的文章对你有所帮助,可以打赏我哟。