纱线客户端上的Spark执行程序不执行执行程序核心数量配置。

问题描述:

不考虑火花执行器的核心数量,执行器的纱线容器不使用多于1个芯。纱线客户端上的Spark执行程序不执行执行程序核心数量配置。

+0

您可以发布工作的例子吗? –

+0

以下是火花配置: –

+0

以下是火花配置:spark.executor.cores = 2和spark.executor.instances = 5。纱线中启动的执行器数量为5个,但每个只使用1个内核。驱动程序UI中的Spark属性显示executor核心为2,但在Yarn UI中,它显示每个容器(执行程序)使用1个核心。 –

YARN每个执行器显示1个核心,而不管spark.executor.cores,因为默认使用DefaultResourceCalculator。它只考虑内存。

public int computeAvailableContainers(Resource available, Resource required) { 
// Only consider memory 
return available.getMemory()/required.getMemory(); 
    } 

使用DominantResourceCalculator,它同时使用cpu和内存。

设置以下配置中capacity-scheduler.xml

yarn.scheduler.capacity.resource-calculator=org.apache.hadoop.yarn.util.resource.DominantResourceCalculator 

更多DominantResourceCalculator

+0

谢谢谢克尔。它确实有帮助。 –