我实际上是想弄清楚单个节点管理器中有多少个容器。它取决于哪些因素?在确定每个节点的容器数量时,“yarn.scheduler.minimum-allocation-vcores”和“yarn.scheduler.maximum-allocation-vcores”的作用是什么?
答案 0 :(得分:2)
纱线中的默认资源调度程序为Capacity Scheduler。
Capacity Scheduler有两个资源计算器
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
在spark中,我们指定spark.executor.cores
yarn.scheduler.minimum-allocation-vcores
和yarn.scheduler.maximum-allocation-vcores
用于定义每个容器可分配的最小和最大vcores数。