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 倍)。
我正在尝试了解 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 倍)。