Performance 预测群集上的Spark性能/可扩展性?
假设您已经在Spark中编写了一个算法,您可以使用Performance 预测群集上的Spark性能/可扩展性?,performance,apache-spark,benchmarking,scalability,Performance,Apache Spark,Benchmarking,Scalability,假设您已经在Spark中编写了一个算法,您可以使用1.评估其性能。。在本地模式下运行的大小为N的数据集上的X核心。您将如何处理这些问题: 在具有Y节点和数据大小M>>N的集群上运行的运行时是什么 使用任意数量的节点时,大小为M>>N的数据集的最小可能运行时间是多少 显然,这受到无数因素的影响,几乎不可能给出准确的估计。但是你怎么能做出有根据的猜测呢?在本地模式下运行主要允许测量CPU使用情况。是否有经验法则来解释洗牌中的磁盘+网络负载?甚至有没有方法可以模拟集群上的性能?数据负载可以估计为O
1.评估其性能。。在本地模式下运行的大小为N
的数据集上的X
核心。您将如何处理这些问题:
- 在具有
节点和数据大小Y
的集群上运行的运行时是什么M>>N
- 使用任意数量的节点时,大小为
的数据集的最小可能运行时间是多少M>>N
显然,这受到无数因素的影响,几乎不可能给出准确的估计。但是你怎么能做出有根据的猜测呢?在本地模式下运行主要允许测量CPU使用情况。是否有经验法则来解释洗牌中的磁盘+网络负载?甚至有没有方法可以模拟集群上的性能?数据负载可以估计为O(n) 可以对每个阶段的算法进行估计。整个算法是所有阶段的累积。注意,每个阶段有不同数量的数据,它与第一个输入数据有关系
- 如果整个算法有O(n),那么它就是O(n)
- 如果整个算法有O(n logn),那么它就是O(n logn)
- 如果整个算法有O(n2),则需要改进算法以适应M>>N
- 没有大规模的洗牌/网络足够快
- 每个节点具有相同的配置
- 对于单个节点上的数据大小N,总时间花费为T
- 节点数为X
T*M/n/X
如果算法是O(n logn)T*M/n/X*log(M/n)
编辑
如果有一个大的混乱,那么它是关于带宽的O(n)。增加的额外时间是dataSize(M)/bandwidth
如果有很多大的洗牌,然后考虑改进算法。
这是完全有效的,但是我更感兴趣的是不完全忽略磁盘+网络。如果我知道会有大的混乱,并且我也知道集群的带宽,该怎么办?忽略并行化开销不允许估计并行执行的限制。磁盘没有被忽略。如果有洗牌,我估计是M/带宽。积累成结果。如果整个数据集需要多次洗牌,我会考虑改进算法。