在最基本的层面上,Container是单个节点上如RAM、CPU和磁盘等物理资源的集合。单个节点上(或者单个大节点)可以有多个Container。系统中的每个节点可以认为是由内存(如512MB或者1GB)和CPU的最小容量的多个Container组成。ApplicationMaster可以请求任何Container来占据最小容量的整数倍的资源。
因此Container代表了集群中单个几点上的一组资源(内存,CPU),有NodeManager监控,由ResourceManager调度。
每个应用程序从ApplicationMaster开始,它本身就是一个Container(通常称为Container0)。一旦启动,ApplicationMaster就与ResourceManager协商更多的Container。在运行过程中,可以动态的请求或者释放Container。例如,一个MapReduce作业可以请求一定量的Map Container,当Map任务结束时,它可以释放这些Map Container,并请求更多的Reduce Container。