Apache Spark 独立模式:内核数

Apache Spark standalone mode: number of cores

我正在尝试了解 Spark 内部结构的基础知识和 Spark 文档中关于以本地模式提交应用程序的 spark-submit --master 设置:

local[K] Run Spark locally with K worker threads (ideally, set this to the number of cores on your machine).

local[*] Run Spark locally with as many worker threads as logical cores on your machine.

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

当 Spark 使用多个逻辑核心时,它有什么好处?内部发生了什么?

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

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