YARN中的容器是什么?是否与运行nodemanager上的任务的子JVM相同或不同?
答案 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执行程序。