【发布时间】:2015-12-03 18:48:57
【问题描述】:
我正在测试每个执行程序 (--executor-cores) 的不同核心数对 Spark 上 SVD 运行时的影响。随着--executor-cores 的固定,主数据RDD 的分区数是变化的。但是,对于给定数量的 RDD 分区,不同 --executor-cores 的 SVD 计算时间似乎没有显着变化。这有点令人困惑。
我的环境是:
- 具有 3 个节点的 Spark 集群(每个节点 32 个内核和 32GB 内存)。每个节点运行 1 个 Worker。
- spark.max.cores = 96
- 集群管理器=
Standalone - 部署模式 =
client
我已经为--executor-cores = [4, 16] 绘制了结果,可以看出,对于给定的分区大小,当分区大小增加时,计算时间之间没有太大差异。所以我的问题是:
- 设置每个执行器的核心数有什么影响?
- 每个执行程序的核心数确实对运行时有显着影响,但仅对小分区大小而不是大分区大小,为什么?
- 它是否会以任何方式影响并行性(我不确定是否会)?
【问题讨论】:
-
你的数据有多大?
-
它是 560MB,有大约 2000 万个条目。每个条目对应一个矩阵元素,并为该高度稀疏矩阵 (234934 x 140214) 计算 SVD
-
1.要处理的数据不多,因此基准测试没有用。 2. 与输入数据相比,分区数量巨大,更注重分区大小。
-
加上丹尼斯给出的答案实际上非常好!
-
正如在回复 Dennis 时提到的,我会尝试使用更大的数据集。
标签: apache-spark parallel-processing apache-spark-mllib svd