独立模式下的 Spark 并行

Spark Parallelism in Standalone Mode

我正在尝试 运行 在我的系统中以独立模式启动。我系统的当前规格是 8 个内核和 32 Gb 内存。基于 this article 我计算的火花配置如下:

spark.driver.memory 2g
spark.executor.cores 3
spark.executor.instances 2
spark.executor.memory 20g
maximizeResourceAllocation TRUE

我像这样在我的 jupyter notebook 中创建了 spark 上下文,并通过这个检查并行度级别

sc = SparkContext()
sc.defaultParallelism

默认的并行度是 8。我的问题是,为什么我提到了 2 个内核,它却给了我 8?如果它没有给我系统的实际并行度,那么如何获得实际的并行度?

谢谢!

sc.defaultParallelism

returns 定义的默认并行级别 SparkContext.By 默认是应用程序可用的内核数。

但是要知道 jupyter note book 的设置 pre-applied 是什么,您可以打印

 sc._conf.getAll()

来自 scala sc.getConf.getAll.foreach(println)

那应该有 属性

spark.default.parallelism

我认为在这种情况下,它的预设就是为什么您的情况会得到 8。

谢谢大家,如果有人在使用 pyspark(版本 > 2.3.X)的 集群执行 中面临相同的需求,我必须按如下方式恢复变量: spark.sparkContext.getConf().getAll() 然后我使用 python 只获取 spark.default.parallelism 键的值。 以防万一! 谢谢!

我遇到了同样的问题,我的 mac 有 1 个 CPU 并且只有 4 个内核,但是当我这样做时

sc.defaultParallelism

我总是得到 8。

所以我一直想知道为什么会这样,最后发现是在 cpu 上启用了超线程,它在 mac[=12 上为您提供了 8 个逻辑 cpu =]

$ sysctl hw.physicalcpu hw.logicalcpu
hw.physicalcpu: 4
hw.logicalcpu: 8