我在通过Spark - EC2 .sh脚本设置的EC2集群上运行Spark。我启动的5个从属实例总共有40个内核,但是每个实例都不能利用所有的内核。
从slave日志中,我可以看到slave似乎一个接一个地执行任务。我在slave实例上运行top, cpu大约是100%而不是800%。
我已经打开了spark.mesos.coarse模式。数据被分成40块。当我在本地以独立模式运行Spark时,它可以使用8个内核。
我能做些什么来让Spark slave利用所有可用的内核吗?
在创建SparkContext
之前尝试将spark.cores.max
设置为8
:
val conf = new SparkConf()
.setMaster("...")
.set("spark.cores.max", "8")
val sc = new SparkContext(conf)