繁体   English   中英

独立模式下的 Spark 并行

[英]Spark Parallelism in Standalone Mode

我正在尝试在我的系统中以独立模式运行 spark。 我的系统的当前规格是 8 核和 32 Gb 内存。 基于这篇文章,我计算火花配置如下:

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

返回在 SparkContext 上定义的默认并行级别。默认情况下,它是应用程序可用的核心数。

但要知道 jupyter Notebook预先应用的设置是什么,您可以打印

 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 上为您提供了 8 个逻辑 cpu

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM