我实际上是在试图弄清楚单个节点管理器中有多少个容器。它取决于哪些因素?"yarn.scheduler.minimum-allocation-vcores"和"yarn.scheduler.maximum-allocation-vcores"在决定每个节点的容器数量方面扮演什么角色?
yarn 中的默认资源调度程序是容量调度程序。
容量计划程序有两个资源计算器
- 默认
资源计算器(默认)
主导资源计算器
DefaultResourceCalculator 仅使用内存来计算可用容器
public int computeAvailableContainers(Resource available, Resource required) {
// Only consider memory
return available.getMemory() / required.getMemory();
}
DominantResourceCalculator同时使用内存和内核
public int computeAvailableContainers(Resource available, Resource required) {
return Math.min(
available.getMemory() / required.getMemory(),
available.getVirtualCores() / required.getVirtualCores());
}
yarn.scheduler.minimum-allocation-vcores
和yarn.scheduler.maximum-allocation-vcores
在决定每个节点的容器数量方面没有任何直接作用。
在请求资源时,应用程序告诉纱线内存和核心它需要每个容器。
在mapreduce中,我们指定了mapreduce.map.cpu.vcores
和mapreduce.reduce.cpu.vcores
所需的vcore。
在 Spark 中,我们指定spark.executor.cores
所需的 vcore
yarn.scheduler.minimum-allocation-vcores
和 yarn.scheduler.maximum-allocation-vcores
用于定义每个容器可分配的最小和最大 vcore 数。