【发布时间】:2017-04-15 07:02:27
【问题描述】:
我目前正在一个小型集群(具有 32 个 CPU 和 128 GB 内存的 3 个节点)上评估 Spark 2.1.0,并使用线性回归 (Spark ML) 基准。我只测量了参数计算的时间(不包括开始、数据加载……)并识别出以下行为。对于 0.1 Mio – 3 Mio 数据点的小型数据集,测量的时间并没有真正增加,而是保持在大约 40 秒。只有像 300 个 Mio 数据点这样的大型数据集,处理时间才达到 200 秒。因此,集群似乎根本无法扩展到小型数据集。
我还将本地 PC 上的小型数据集与仅使用 10 个工作器和 16GB 内存的集群进行了比较。集群的处理时间增加了 3 倍。那么这是否被认为是 SPARK 的正常行为并且可以通过通信开销来解释,还是我做错了什么(或者线性回归并不真正具有代表性)?
该集群是一个独立的集群(没有 Yarn 或 Mesos),提交的基准测试有 90 个工作人员,每个工作人员有 1 个核心和 4 GB 内存。
火花提交: ./spark-submit --master spark://server:7077 --class Benchmark --deploy-mode client --total-executor-cores 90 --executor-memory 4g --num-executors 90 .. ./Benchmark.jar pathToData
【问题讨论】:
-
我不确定您是否对较小的 0.1-0.3M 数据集或较大的 300M 数据集的性能不满意?
-
嗨,我对性能并不满意。我只是想知道即使数据已经加载并且非常小,集群需要半分钟的计算时间是否正常。
-
我会说你的观察是合理的。一旦我睡了一会儿,我会提供更详细的答案 - 如果在此期间没有其他人这样做的话。
标签: apache-spark benchmarking apache-spark-ml