[英]Predicting Spark performance/scalability on cluster?
假设您已经在Spark中编写了一种算法,并且可以在本地模式下使用大小为N
数据集上的1 .. X
核评估其性能。 您将如何处理以下问题:
Y
节点且数据大小为M >> N
的群集上运行的运行时是什么? M >> N
的数据集的最小可能运行时间是多少? 显然,这受无数因素的影响,几乎不可能给出精确的估计。 但是,您如何得出有根据的猜测? 在本地模式下运行主要允许测量CPU使用率。 是否有一个经验法则还可以考虑随机播放中的磁盘和网络负载? 甚至还有模拟集群性能的方法吗?
数据负载可以估计为O(n)。
可以为每个阶段估计算法。 整个算法是所有阶段的累积。 注意,每个阶段都有不同数量的数据,它与第一个输入数据有关系。
假设
那么算法的时间为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.