什么是YARN中的容器?



什么是YARN中的容器?它与运行nodemanager上的任务的子JVM相同还是不同?

它表示给定集群中单个节点上的资源(内存)。
容器

  • 由节点管理器监督
  • 资源管理器调度的

一个MR任务在这样的容器中运行。

一个节点上可以有多个容器(或者一个非常大的节点)

系统中的每个节点被认为是由多个最小内存大小(例如512MB或1gb)的容器组成的。ApplicationMaster可以请求任何容器作为最小内存大小的倍数。

来源,请参见ResourceManager/Resource Model。

"Container"这个词在YARN中有两种用法,

Container:表示已分配给ApplicationMaster的资源。ResourceManager负责向ApplicationMaster发布资源/容器。检查容器API。

启动容器:基于分配的资源(容器)ApplicationMaster请求NodeManager启动容器,导致在一个节点上执行task。检查ContainerManager API

容器是工作单元发生的地方。例如,每个MapReduce任务(不是整个作业)在一个容器中运行。

应用程序/作业将在一个或多个容器上运行。

为每个容器分配一组系统资源,目前支持CPU内核和RAM。Hadoop集群中的每个节点可以运行多个容器。

在Hadoop中JobTracker为每个MapReduce任务分配一个槽位。然后TaskTracker为每个任务生成一个单独的JVM(除非JVM重用没有启用)。

简单来说,容器是运行YARN应用程序的地方。它在每个节点中都可用。应用程序主与调度程序(资源管理器的组件之一)协商容器。容器由Node Manager启动

根据输入数据的大小,创建多个输入分割。MR作业需要处理整个数据,因此创建了多个任务(map &减少任务)。因此,对于每个输入拆分将由一个任务处理。现在如何运行这个任务,由资源管理器给出建议。资源管理器知道哪个节点管理器空闲,哪个节点管理器忙,就像大学校长和节点管理器是大学的班主任,校长知道哪个老师空闲。因此,它要求节点管理器在容器中运行该任务(整个作业的一小部分),即jvm的内存区域。因此作业在容器内作为应用程序主机运行。

Container为资源分配,是ResourceManager授予特定ResourceRequest的成功结果。容器授予应用程序在特定主机上使用特定数量的资源(内存,cpu等)的权限。

Container : 

资源的逻辑租期和在节点上生成的实际进程可以互换使用。它与任务(或AM)运行的过程相同。为了启动容器,我们提供了容器对象和CLC (ContainerLaunchContext),我们在其中设置了运行任务(或AM)的命令列表。

nmClient.startContainer(container, clcObj)
ContainerLaunchContext code snippet :
<code>
.
.
.
 /**
   * Add the list of <em>commands</em> for launching the container. All
   * pre-existing List entries are cleared before adding the new List
   * @param commands the list of <em>commands</em> for launching the container
   */
  @Public
  @Stable
  public abstract void setCommands(List<String> commands);
</code>

容器是应用程序运行其任务的地方。如果你想知道总数是多少。在集群中运行容器,然后你可以检查你的集群Yarn-Resource manager UI。

Yarn URL: http://Your-Active-ResourceManager-IP:45020/cluster/apps/RUNNING

在"正在运行的容器"一栏中,总编号为。

注意:如果您使用的是spark,那么spark执行器将在容器内运行。一个容器可以容纳多个spark执行器

相关内容

  • 没有找到相关文章

最新更新