繁体   English   中英

预测集群上的Spark性能/可扩展性?

[英]Predicting Spark performance/scalability on cluster?

假设您已经在Spark中编写了一种算法,并且可以在本地模式下使用大小为N数据集上的1 .. X核评估其性能。 您将如何处理以下问题:

  • 在具有Y节点且数据大小为M >> N的群集上运行的运行时是什么?
  • 使用任意数量的节点,大小为M >> N的数据集的最小可能运行时间是多少?

显然,这受无数因素的影响,几乎不可能给出精确的估计。 但是,您如何得出有根据的猜测? 在本地模式下运行主要允许测量CPU使用率。 是否有一个经验法则还可以考虑随机播放中的磁盘和网络负载? 甚至还有模拟集群性能的方法吗?

数据负载可以估计为O(n)。

可以为每个阶段估计算法。 整个算法是所有阶段的累积。 注意,每个阶段都有不同数量的数据,它与第一个输入数据有关系。

  • 如果整个算法具有O(n),则为O(n)。
  • 如果整个算法具有O(n log n),则为O(n log n)。
  • 如果整个算法具有O(n 2 ),则需要对该算法进行改进以适合M >>N。

假设

  • 没有巨大的洗牌/网络足够快
  • 每个节点具有相同的配置
  • 对于单个节点上的数据大小N,总花费的时间为T。
  • 节点数为X

那么算法的时间为O(n) T * M / N / X

那么算法的时间为O(n log n) T * M / N / X * log(M/N)

编辑

如果有一个大的混洗,则它相对于带宽为O(n)。 添加的额外时间是dataSize(M)/bandwidth

如果有很多大的混洗,则考虑改进算法。

暂无
暂无

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

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