如果数据适合单个机器,那么使用Spark是否有意义?

时间:2014-05-28 17:19:35

标签: scala parallel-processing apache-spark

我有20GB的数据需要处理,所有这些数据都适合我的本地机器。我打算使用Spark或Scala并行收集来对这些数据实现一些算法和矩阵乘法。

由于数据适用于单个机器,我应该使用Scala并行集合吗?

这是真的:并行任务的主要瓶颈是将数据传送到CPU进行处理,因为所有数据都尽可能接近CPU Spark会不会带来任何显着的性能提升?

Spark会设置并行任务的开销,即使它只是在一台机器上运行,所以这种开销在这种情况下是多余的?

1 个答案:

答案 0 :(得分:11)

很难提供一些非显而易见的指令,例如,如果你有你的数据并且没有达到80%的内存和......,那么使用本地模式。话虽如此,有一些要点,一般来说,即使你的数据适合你的机器内存,也可能会让你使用spark:

  1. 真正密集的CPU处理,从我的头脑,它可能是复杂的文本解析
  2. 稳定性 - 假设您有多个处理阶段,并且在单台机器出现故障时您不希望丢失结果。 特别重要的是,如果你有经常性的计算,而不是一次性的查询(这样,你花在桌子上的时间可能会得到回报)
  3. 流媒体 - 你以流方式从某个地方获取数据,虽然它的快照适合单机,但你必须以某种方式编排它
  4. 在您的特定情况下

      

    所以因为所有数据都与CPU Spark一样接近   没有给出任何显着的性能提升

    当然不是,Spark并不是一种伏都教魔法,它可能会让你的数据更接近CPU,但它可以帮助你在机器之间扩展,从而缩小CPU(点#1)

      

    即使它,Spark也会设置并行任务的开销   将只在一台机器上运行,因此这个开销是多余的   这个案子?

    我可能听起来很明显,但是

    1. 考虑#2和#3,你需要它们吗?如果是的话,去火花或别的什么
    2. 如果不是,请以愚蠢的方式实施处理(并行收集)
    3. 个人资料并看一看。您的处理是否受CPU限制?你可以加快它,没有很多调整?如果不是,请去火花。
    4. 列表中还有[厚颜无耻]第4点)我为什么要使用Spark?。这是炒作 - Spark是一种非常性感的技术,很容易“销售”给你的开发者(它是大数据的最前沿)和公司(你的老板,如果你正在建立自己的产品,你的客户如果你正在为其他人建造产品。)