我使用参数--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
答案 0 :(得分:1)
原因是我错误地通过在程序中调用setMaster(“local”)来覆盖参数。在删除此setMaster()语句后,它在多个核心上运行,并在spark UI中运行spark.master = local [6]。
答案 1 :(得分:0)
我想到的第一个问题是你并没有真正拥有多个分区的数据。
如果您在代码中的某个位置执行sc.parallelize
或sc.textFile
或类似操作,请确保您在多个分区中拥有数据。你可以通过SparkUI检查它。
如果没有,请提供有关您工作的更多详细信息。
答案 2 :(得分:0)
将主人设置为" local [i]"表示 i 工作线程,与使用 i CPU不同。