YARN的容器是什么?

时间:2013-01-16 18:28:29

标签: hadoop mapreduce yarn

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

9 个答案:

答案 0 :(得分:23)

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

  • 由节点管理员监督
  • 由资源管理员安排

一个MR任务在容器中运行

答案 1 :(得分:15)

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

  

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

Source,请参阅ResourceManager /资源模型部分。

答案 2 :(得分:5)

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

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

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

在Hadoop 1.x中,JobTracker分配一个插槽来运行每个MapReduce任务。然后,TaskTracker为每个任务生成一个单独的JVM(除非未启用JVM重用)。

答案 3 :(得分:3)

Word'Container'在两个上下文中用于YARN,

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

启动容器:基于分配的资源(容器)ApplicationMaster请求NodeManager启动容器,从而导致在节点上执行任务。查看ContainerManager API。

答案 4 :(得分:1)

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

答案 5 :(得分:1)

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

您还可以检查此URL

Hortonworks - Apache Hadoop YARN – Concepts and Applications

答案 6 :(得分:0)

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>

答案 7 :(得分:0)

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

答案 8 :(得分:0)

容器是应用程序运行其任务的地方。 如果您想知道集群中正在运行的容器总数,则可以签入集群的Yarn-Resource Manager UI。

纱线网址:http://Your-Active-ResourceManager-IP:45020/cluster/apps/RUNNING

在“运行容器”列中的总数。存在正在运行的容器详细信息。

注意:如果使用的是spark,则spark执行程序将在容器内运行。一个容器可以容纳多个Spark执行程序。