容器(Container)是YARN框架中的计算单元。它是一个任务进行工作的单元子系统。也可以这么认为,YARN框架中的容器相当于MapReduce v1中的一个任务(task)执行器。集群节点与容器之间的关系是:一个节点可以运行多个容器,但一个容器只能运行在一个节点之内。
一个容器就是已分配的一组系统资源。目前支持两种类型的系统资源:
中央处理器内核(CPU core)
内存(单位为MB)
拥有系统资源的容器在某一节点上执行,所以一个容器中隐含了“资源名称”的概念,这个“资源名称”就是容器所在的机架和节点的名称。请求一个容器的时候,就会向一个节点发出请求。容器使得程序可以在某个节点上获得指定数量的CPU内核和一定数量的内存。
实际上,任何任务或者程序(单个任务或者多个任务组成的有向无环图)都运行在一个或者多个容器中。在YARN框架中全权负责分配容器的组件叫做节点管理器。