【问题标题】:How does Apache Spark achieve a 100x speedup over Hadoop MapReduce and in what scenarios?Apache Spark 如何在 Hadoop MapReduce 上实现 100 倍的加速以及在什么场景下?
【发布时间】:2016-03-10 01:45:47
【问题描述】:

Apache Spark [http://spark.apache.org/] 声称在内存中比 Apache Hadoop 快 100 倍。它是如何实现这种惊人的加速的?这种加速是否仅适用于迭代机器学习算法,或者也适用于 JOIN 和 GROUPBY 等 ETL(提取-转换-加载)任务? Spark 的 RDD(弹性分布式数据集)和 DataFrame 都可以提供这种加速吗? Spark 社区是否针对上述某些场景获得了任何基准测试结果?

【问题讨论】:

标签: hadoop apache-spark bigdata distributed-computing


【解决方案1】:
  1. Spark 在内存中进行数据处理。
  2. 不会像 Map Reduce 那样有中间文件,所以没有 I/O 或可以忽略不计。
  3. 在所有情况下,它的运行速度都不是 100 倍,尤其是在涉及连接和排序时。
  4. 因为它是内存密集型的,它可以快速饱和集群。您可能能够在给定时间点以 100 倍的速度运行一项作业,但无法运行使用传统 hadoop 方法可以运行的尽可能多的作业/应用程序。
  5. RDD 和数据帧是用于处理数据的内部数据结构。 RDD 是数据的内存数据结构,数据帧主要是这些 RDD 的元数据。它们更多地代表 spark 中的数据。

这些声明中的大多数问题都没有针对真实的生产用例进行基准测试。可以代表实际业务应用程序的数据可能有数量,但没有质量。 Spark 可以非常方便地用于流式分析,您希望在其中近乎实时地了解数据。但对于真正的批处理,Hadoop 可能是更好的解决方案,尤其是在商用硬件上。

【讨论】:

    【解决方案2】:

    由于内存处理,Spark 比 Hadoop 更快。但是关于这些数字有一些扭曲的事实。

    在某些用例中,Spark 仍然必须依赖 HDFS。

    看看这个slide,尤其是幻灯片编号:6和这个benchmarking article

    看看完整的演示文稿。

    由于内存处理,Spark 的实时分析速度更快。 Hadoop 适用于批处理。如果您不担心作业的延迟,仍然可以使用 Hadoop。

    但有一件事是肯定的。 Spark 和 Hadoop 必须共存。他们都不能替代其他人。

    【讨论】:

      【解决方案3】:
      • Apache Spark 处理内存中的数据,而 Hadoop MapReduce 在执行映射或归约操作后保留回磁盘。但 Spark 需要大量内存

      • Spark 将进程加载到内存中并保留在那里,直到另行通知为止,以进行缓存。

      • 弹性分布式数据集 (RDD),可让您透明地将数据存储在内存中,并在需要时将其持久化到磁盘中。

      • 由于 Spark 使用内存,所以没有同步障碍会拖慢您的速度。这是 Spark 表现出色的主要原因。

      • Spark 不仅可以像 MapReduce 那样处理一批存储的数据,还可以使用 Spark Streaming 实时处理数据。

      • DataFrames API 的灵感来自 R 和 Python (Pandas) 中的数据帧,但从头开始设计为现有 RDD API 的扩展强>.

      • DataFrame 是组织成命名列的分布式数据集合,但在底层具有更丰富的优化,支持 spark 的速度。 p>

      • 使用 RDD 的 Spark 可以简化复杂的操作,例如 joingroupBy,而在后端,您可以处理碎片数据.正是这种碎片化使得 Spark 能够并行执行。

      • Spark 允许使用有向无环图 (DAG) 模式开发复杂的多步骤数据管道。它支持跨 DAG 共享内存中的数据,以便不同的作业可以处理相同的数据。 DAGSpark 速度的主要部分。

      • Spark 代码库要小得多。

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-29
        相关资源
        最近更新 更多