Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 预测群集上的Spark性能/可扩展性?_Performance_Apache Spark_Benchmarking_Scalability - Fatal编程技术网

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

Performance 预测群集上的Spark性能/可扩展性?,performance,apache-spark,benchmarking,scalability,Performance,Apache Spark,Benchmarking,Scalability,假设您已经在Spark中编写了一个算法,您可以使用1.评估其性能。。在本地模式下运行的大小为N的数据集上的X核心。您将如何处理这些问题: 在具有Y节点和数据大小M>>N的集群上运行的运行时是什么 使用任意数量的节点时,大小为M>>N的数据集的最小可能运行时间是多少 显然,这受到无数因素的影响,几乎不可能给出准确的估计。但是你怎么能做出有根据的猜测呢?在本地模式下运行主要允许测量CPU使用情况。是否有经验法则来解释洗牌中的磁盘+网络负载?甚至有没有方法可以模拟集群上的性能?数据负载可以估计为O

假设您已经在Spark中编写了一个算法,您可以使用
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
如果算法是O(n)
T*M/n/X

如果算法是O(n logn)
T*M/n/X*log(M/n)

编辑

如果有一个大的混乱,那么它是关于带宽的O(n)。增加的额外时间是
dataSize(M)/bandwidth


如果有很多大的洗牌,然后考虑改进算法。

这是完全有效的,但是我更感兴趣的是不完全忽略磁盘+网络。如果我知道会有大的混乱,并且我也知道集群的带宽,该怎么办?忽略并行化开销不允许估计并行执行的限制。磁盘没有被忽略。如果有洗牌,我估计是M/带宽。积累成结果。如果整个数据集需要多次洗牌,我会考虑改进算法。