yarn的保留cpu核数怎么_驯YARN记-01:集群和YARN基础知识

04b46da9c80d459a84f544e2275bd5fa.png

YARN(Yet Another Resource Negotiator)是Apache Hadoop生态系统的资源管理层。YARN已经有几个版本可供使用,但许多用户仍然有关于YARN是什么,它是什么以及它是如何工作的基本问题。

  • 提供对构成YARN的组件的基本了解
  • 说明MapReduce作业和spark作业如何适合YARN计算模型。
  • 概述YARN调度程序的工作原理并提供调度程序配置的构建块示例

1. 集群基础知识

集群是由高速本地网络连接的两个或多个host(也称节点)。两个或多个host由高速本地网络连接的计算机在Hadoop术语中称为群集。从Hadoop的角度来看,集群中可以有数千个主机。在Hadoop中,群集中有两种类型的主机:

3e29d9ac91b177f26821ba0e8034a300.png

图1:master主机和worker作主机

从概念上讲,Master是客户端上程序的通信点。Master将工作发送到群集的其余节点,该群集由工作人员主机组成。(在Hadoop中,集群在技术上可以是单个主机。这样的设置通常用于调试或简单测试,不建议用于典型的Hadoop工作负载。)

2. ResourceManager和NodeManager

在YARN群集中,有两种类型的主机:

  • ResourceManager是负责与客户端通信,对集群进行群集跟踪资源,把收到的任务编排给NodeManagers的master守护进程。
  • NodeManagers是一个worker守护进程,负责启动和跟踪NodeManagers的工作进程。

6011d6bfc2a661d26f620a6db1daa227.png

图2:NodeManager和ResourceManager

3. YARN配置文件

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

4. YARN需要全局视图

YARN目前定义了两种资源,即vcores内存。每个NodeManager跟踪自己的本地资源,并将其资源配置传递给ResourceManager,ResourceManager保持集群可用资源的总计。通过跟踪总数,ResourceManager知道如何在请求时分配资源。(Vcore在YARN中具有特殊含义。您可以将其简单地视为“CPU核心的使用份额”。如果您希望您的任务不那么占用CPU(有时称为I / O密集型),您可以设置vcores与物理核心的比率大于1,以最大限度地利用硬件资源。)

c16e12586aec95c7e4d60f287b85fbd9.png

图3:ResourceManager的全局视图

5. Containers

Container是一个重要的YARN概念。您可以将Container视为在YARN群集上保存资源的请求。目前,Container保存请求由vcore和内存组成,如图4(左)所示。

e4d4164c0a8f3fe1050e88ab29a65559.png

图4:容器作为保留(左),容器作为运行过程(右)
一旦在主机上授予了保留,NodeManager就会启动一个称为task.的进程。图4的右侧显示了作为容器内的进程运行的任务。(第3部分将更详细地介绍YARN如何在特定主机上安排Container。)

6. ApplicationMaster

对于下一节,需要定义两个新的YARN术语:

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

在YARN群集上运行任务的应用程序包含以下步骤:

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

1c464158600649cfd06514f00583bd74.png

图5:在将任务分配给集群之前启动应用程序

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

05f81f68996bb181d11c9427e81a7e27.png

图6:集群上的Application +已分配容器

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

30163d969920db22d278dd409bd37929.png

图7:在集群上的容器中运行的Application + ApplicationMaster

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

172cec42ca90f1ac8b1be5e5938694d3.png

图8:在集群上运行的多个容器中运行的Application + ApplicationMaster +Task

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

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

7.MapReduce基础知识

在MapReduce范例中,应用程序由Map任务和Reduce任务组成。Map任务和Reduce任务与YARN任务非常干净地对齐。

50e580af7f7d71195e97d7c181060c9f.png

图9:Application + Map tasks + Reduce tasks

8. MapReduce和YARN

图10说明了map任务和reduce任务如何完全映射到群集中运行的YARN任务概念。

e04400dc3689b4c652da7f85783d1ca5.png

图10:在群集上运行的合并MapReduce / YARN应用程序

在MapReduce应用程序中,有多个map任务,每个任务都在集群中某个worker主机上的容器中运行。同样,还有多个reduce任务,每个还在一个工作worker上的容器中运行。

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

结论

总结本节中介绍的重要概念:

  • 集群是由通过内部高速网络连接的两个或更多个主机。 Master主机是保留用于控制群集其余部分的少量主机。 Worker主机是群集中的Master主机。
  • 在运行YARN的集群,Master进程称为ResourceManager,而Worker进程称为NodeManagers。
  • YARN的配置文件名为yarn-site.xml。群集中的每个主机上都有一个副本。ResourceManager和NodeManager需要它才能正常运行。YARN跟踪群集,vcores和内存上的两个资源。每个主机上的NodeManager跟踪本地主机的资源,ResourceManager跟踪集群的总数。
  • YARN中的容器包含群集上的资源。YARN确定群集中主机上的空间位置,以确定容器的保留大小。分配容器后,容器可以使用这些资源。
  • YARN中的申请包括三个部分:
  1. 该应用程序客户端,表明一个程序在集群上怎么运行。
  2. 一个ApplicationMaster提供YARN代表应用程序的执行分配资源的能力。
  3. 在YARN分配的容器中执行实际工作(在进程中运行)的一个或多个任务。
一个MapReduce应用程序由map任务和reduce任务组成。在YARN集群中运行的MapReduce应用程序看起来非常类似于MapReduce应用程序范例,但是添加了ApplicationMaster作为YARN的需要。

欢迎关注微信公众号:冢虎大数

4e2a1e2e2a2a6b88e0a57823222abfa7.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值