应用时间处理取决于计算节点的数量
application time processing depending on the number of computing nodes
也许这个问题有点奇怪...但我会试着问一下。
我有一个 Spark 应用程序,我在不同数量的计算节点上测试它。 (这个数我从一个节点变成了四个节点)。
所有节点都是平等的 - 它们具有相同的 CPU 和相同大小的 RAM。
所有应用程序设置(如并行级别或分区计数)都是恒定的。
这里是应用时间根据计算节点数处理的结果:
1 个节点 -- 127 分钟
2 个节点 -- 71 分钟
3 个节点 -- 51 分钟
4 个节点 -- 38 分钟
结果的近似值及其随后的外推表明,随着节点数量的线性增加,处理时间呈指数下降。因此,应用程序时间处理的持续时间不会因增加限制中的节点数而受到显着影响...
谁能解释一下这个事实?
谢谢!
首先,这在很大程度上取决于您的工作类型。 I/O绑定了吗?然后添加更多的 CPU 将无济于事。添加更多节点会有所帮助,但磁盘仍然限制了作业的性能。
其次,对于您添加的每个节点,都会有开销,例如执行器和任务启动、调度等。您还可以在节点之间进行网络传输,尤其是当您的作业有多个随机播放时。
您还可以尝试提高并行度,以便实际利用更多节点和更多 CPU。但是一般情况下很难做到100%的并行化,尤其是像Spark这样年轻的项目。
也许这个问题有点奇怪...但我会试着问一下。
我有一个 Spark 应用程序,我在不同数量的计算节点上测试它。 (这个数我从一个节点变成了四个节点)。
所有节点都是平等的 - 它们具有相同的 CPU 和相同大小的 RAM。
所有应用程序设置(如并行级别或分区计数)都是恒定的。
这里是应用时间根据计算节点数处理的结果:
1 个节点 -- 127 分钟
2 个节点 -- 71 分钟
3 个节点 -- 51 分钟
4 个节点 -- 38 分钟
结果的近似值及其随后的外推表明,随着节点数量的线性增加,处理时间呈指数下降。因此,应用程序时间处理的持续时间不会因增加限制中的节点数而受到显着影响...
谁能解释一下这个事实?
谢谢!
首先,这在很大程度上取决于您的工作类型。 I/O绑定了吗?然后添加更多的 CPU 将无济于事。添加更多节点会有所帮助,但磁盘仍然限制了作业的性能。
其次,对于您添加的每个节点,都会有开销,例如执行器和任务启动、调度等。您还可以在节点之间进行网络传输,尤其是当您的作业有多个随机播放时。
您还可以尝试提高并行度,以便实际利用更多节点和更多 CPU。但是一般情况下很难做到100%的并行化,尤其是像Spark这样年轻的项目。