我们在ec2上运行spark 1.4.0,有6台机器,每台4个核心。我们正在尝试在多个总执行器核心上运行应用程序。但我们希望它尽可能在最少数量的机器上运行(例如,total-executor-cores = 4,我们需要单机.total-executor-cores = 12,我们需要3台机器)
我在以下命令中运行spark shell:
/root/spark/bin/spark-shell --total-executor-cores X --executor-cores 4
或
/root/spark/bin/spark-shell --total-executor-cores X
并检查了spark UI上的核心,并找到了以下内容:
Req total-executor-cores Actual cores with executor-cores param Actual cores without executor-cores=4 param
24 24 24
22 22 16
20 20 8
16 16 0
12 12 0
8 8 0
4 4 0
我们的问题:
executor-cores
时,我们遇到了(1)中描述的问题,但内核的核心数最少spark.deploy.spreadOut
,似乎没有帮助我们的请求谢谢,
尼赞
答案 0 :(得分:-1)
如果我没有错,默认情况下spark由群集节点配置为1个执行者,所以我不是专家,但我认为你想要的是1台机器和4个核心(假设你有默认配置)
/root/spark/bin/spark-shell --executor-cores 4 --num-executors 1
这适用于3台机器和12个核心
/root/spark/bin/spark-shell --total-executor-cores 12 --num-executors 3
正如我之前所说,我不是专家,但我认为 - executor-cores 4 意味着每个执行者(默认情况下每个群集节点)将使用4个核心,而 - -total-executor-cores 12 意味着将在所有执行程序中使用12个核心。另外我认为默认情况下spark会根据可用的执行器数量尝试使用所有可能的核心,所以也许启动spark的第一句就足够了
/root/spark/bin/spark-shell --num-executors 1
因为每个执行程序都有4个核心(同样,假设您有默认配置)。
让我知道它是否适合你