Apache Spark独立模式:核心数量

时间:2015-01-23 22:44:09

标签: multithreading deployment apache-spark

我正在尝试理解Spark内部的基础知识和用于在本地模式下提交应用程序的Spark文档说spark-submit --master设置:

  

local [K]使用K个工作线程在本地运行Spark(理想情况下,将其设置为   您机器上的核心数量)。

     

local [*]在本地运行Spark   与您机器上的逻辑核心一样多的工作线程。

由于所有数据都存储在单个本地计算机上,因此RDD上的分布式操作无法从中受益。

当Spark使用多个逻辑核心时,它如何受益以及内部正在发生什么?

1 个答案:

答案 0 :(得分:7)

系统将分配额外的线程来处理数据。尽管仅限于一台机器,它仍然可以利用现代服务器中可用的高度并行性。

如果你有一个合理大小的数据集,比如说有十几个分区,可以测量使用local [1] vs local [n]所需的时间(其中n是你机器中的核心数)。您还可以看到机器利用率的差异。如果您只有一个核心指定使用,它将只使用100%的一个核心(加上一些额外的垃圾收集)。如果你有4个核心,并指定local [4],它将使用400%的核心(4个核心)。并且可以显着缩短执行时间(尽管通常不会缩短4倍)。