目录
介绍
当用yarn进行资源管理时,yarn平台开发人员主要关注两个方面:
- 资源分配(Resource allocation):具有所需资源和资源的最佳节点上分配应用的containers。
- 强制和资源隔离使用(Enforcement and isolation of Resource usage):在任何节点上,不要让container超出其承诺的/保留的资源。
将CPU作为一类资源
将CPU作为资源分配时出现的一些重要问题是:
- 应用程序如何将其CPU需求告知平台?
- NodeManager(NM)如何告知ResourceManager(RM)所有YARN容器可消耗多少CPU?
- 在具有异构硬件的群集中,如何计算具有更快CPU的节点?
上述问题的答案是引入了称为“ vcores”的新概念-虚拟内核的缩写。管理员必须在每个节点上的yarn-site.xml中设置vcore的数量。应将其设置为多少取决于群集中运行的工作负载类型和可用硬件类型。通常的建议是将其设置为节点上的物理核心数量,但是如果管理员希望在具有更快CPU的节点上运行其他容器,则可以增加它的数量。
当NM启动时,它们将此值报告给RM,RM随后使用该值进行有关集群中CPU资源分配的计算。另一方面,应用程序也将vcores指定为其分配请求的一部分。这样可以使RM从CPU角度了解其资源需求。
YARN scheduler中的可插入资源向量
该CapacityScheduler有一个概念ResourceCalculator -一个用于通过查看所有已确定的资源进行分配的数学可插拔的层。这包括有助于做出以下决定的实用程序:
- 此节点是否具有每种资源类型的足够资源来满足此请求?
- 我可以在该节点上容纳多少个containers,对具有可用资源的