设置spark在本地多线程模式下运行,为什么只有一个cpu在运行?

时间:2015-04-24 09:25:00

标签: apache-spark

我使用参数--master local [6]提交在本地机器上运行的spark作业。但是,当我监视Spark UI时,我发现spark.master设置为local而不是local [6]。我追踪了cpu状态,它还显示目前只有一个杯子工作,详情如下。

Tasks: 157 total,   1 running, 155 sleeping,   1 stopped,   0 zombie
%Cpu0  :  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu2  : 99.7 us,  0.3 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu3  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu4  :  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu5  :  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu6  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu7  :  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:  49463808 total, 43074276 used,  6389532 free,   225860 buffers
KiB Swap:  4194300 total,        0 used,  4194300 free.  8510192 cached Mem

Spark UI spark.master info

spark submit command

3 个答案:

答案 0 :(得分:1)

原因是我错误地通过在程序中调用setMaster(“local”)来覆盖参数。在删除此setMaster()语句后,它在多个核心上运行,并在spark UI中运行spark.master = local [6]。

答案 1 :(得分:0)

我想到的第一个问题是你并没有真正拥有多个分区的数据。

如果您在代码中的某个位置执行sc.parallelizesc.textFile或类似操作,请确保您在多个分区中拥有数据。你可以通过SparkUI检查它。

如果没有,请提供有关您工作的更多详细信息。

答案 2 :(得分:0)

将主人设置为" local [i]"表示 i 工作线程,与使用 i CPU不同。