Amazon ec2 EC2上的Spark无法利用所有可用的磁芯

Amazon ec2 EC2上的Spark无法利用所有可用的磁芯,amazon-ec2,mapreduce,apache-spark,Amazon Ec2,Mapreduce,Apache Spark,我正在通过脚本设置的EC2集群上运行。我启动的5个从机实例总共有40个内核,但每个实例都无法利用所有内核 从slave日志中,我可以看到slave似乎一个接一个地执行任务。我在从机实例上运行了top,cpu大约是100%,而不是800% 我已打开spark.mesos.Rough模式。数据被分成40个块。当我在本地计算机上以独立模式运行Spark时,它可以使用8个内核 我可以做些什么来让Spark从属服务器利用所有可用的内核吗?在创建SparkContext之前,尝试设置Spark.cores.

我正在通过脚本设置的EC2集群上运行。我启动的5个从机实例总共有40个内核,但每个实例都无法利用所有内核

从slave日志中,我可以看到slave似乎一个接一个地执行任务。我在从机实例上运行了top,cpu大约是100%,而不是800%

我已打开spark.mesos.Rough模式。数据被分成40个块。当我在本地计算机上以独立模式运行Spark时,它可以使用8个内核


我可以做些什么来让Spark从属服务器利用所有可用的内核吗?

在创建
SparkContext
之前,尝试设置
Spark.cores.max
让我们先设置
8

在Spark 0.9中:

val conf = new SparkConf() 
   .setMaster("...")
   .set("spark.cores.max", "8")
val sc = new SparkContext(conf)

spark.mesos.Rough
仅在mesos下运行时影响spark。您是在Mesos下运行Spark还是在Spark的独立模式下运行Spark(如果您使用的是Spark 0.7+,默认EC2脚本使用独立模式)。感谢@Josh Rosen及时回复。我使用的是0.7,所以它应该是独立模式。我想使用Spark进行实时查询,响应时间在1~2秒内。有可能吗?Spark绝对能够进行低延迟查询;这是Shark和Spark流媒体的基础。利用率不足可能是由于您的作业没有足够的并行性,或者是由于位置限制。你能提供更多关于你工作的细节吗?同样,考虑把这个问题张贴在邮件列表上。与StackOverflow相比,该列表更适合于来回调试讨论。从top命令中,我可以看到多个内核参与其中。问题是cpu似乎需要一段时间才能完全投入到任务中。我的实时查询大约需要3~4秒,但ec2虚拟化似乎不会立即将所有cpu功率授予进程。我没有物理群集可供使用,因此,没有。但当我在本地计算机上执行此操作时,cpu利用率立即达到100%