Spark是什么?Spark和Hadoop的区别

  • 内容
  • 评论
  • 相关

Spark 是加州大学伯克利分校 AMP(Algorithms,Machines,People)实验室开发的通用内存并行计算框架。

Spark 在 2013 年 6 月进入 Apache 成为孵化项目,8 个月后成为 Apache 顶级项目。

Spark 以其先进的设计理念,迅速成为社区的热门项目,围绕着 Spark 推出了 SparkSQL、SparkStreaming、MLlib 和 GraphX 等组件,逐渐形成大数据处理一站式解决平台。

Spark 与 Hadoop

Hadoop 已经成了大数据技术的事实标准,Hadoop MapReduce 也非常适合于对大规模数据集合进行批处理操作,但是其本身还存在一些缺陷。特别是 MapReduce 存在的延迟过高,无法胜任实时、快速计算需求的问题,使得需要进行多路计算和迭代算法的用例的作业过程并非十分高效。

根据 Hadoop MapReduce 的工作流程,可以分析出 Hadoop MapRedcue 的一些缺点。

1)Hadoop MapRedue 的表达能力有限。

所有计算都需要转换成 Map 和 Reduce 两个操作,不能适用于所有场景,对于复杂的数据处理过程难以描述。

2)磁盘 I/O 开销大。

Hadoop MapReduce 要求每个步骤间的数据序列化到磁盘,所以 I/O 成本很高,导致交互分析和迭代算法开销很大,而几乎所有的最优化和机器学习都是迭代的。所以,Hadoop MapReduce 不适合于交互分析和机器学习。

3)计算延迟高。

如果想要完成比较复杂的工作,就必须将一系列的 MapReduce 作业串联起来然后顺序执行这些作业。每一个作业都是高时延的,而且只有在前一个作业完成之后下一个作业才能开始启动。因此,Hadoop MapReduce 不能胜任比较复杂的、多阶段的计算服务。

Spark 是借鉴了 Hadoop MapReduce 技术发展而来的,继承了其分布式并行计算的优点并改进了 MapReduce 明显的缺陷。

Spark 使用 Scala 语言进行实现,它是一种面向对象的函数式编程语言,能够像操作本地集合对象一样轻松地操作分布式数据集。它具有运行速度快、易用性好、通用性强和随处运行等特点,具体优势如下。

1)Spark 提供了内存计算,把中间结果放到内存中,带来了更高的迭代运算效率。通过支持有向无环图(DAG)的分布式并行计算的编程框架,Spark 减少了迭代过程中数据需要写入磁盘的需求,提高了处理效率。

2)Spark 为我们提供了一个全面、统一的框架,用于管理各种有着不同性质(文本数据、图表数据等)的数据集和数据源(批量数据或实时的流数据)的大数据处理的需求。

Spark 使用函数式编程范式扩展了 MapReduce 模型以支持更多计算类型,可以涵盖广泛的工作流,这些工 作流之前被实现为 Hadoop 之上的特殊系统。

Spark 使用内存缓存来提升性能,因此进行交互式分析也足够快速,缓存同时提升了迭代算法的性能,这使得 Spark 非常适合数据理论任务,特别是机器学习。

3)Spark 比 Hadoop 更加通用。Hadoop 只提供了 Map 和 Reduce 两种处理操作,而 Spark 提供的数据集操作类型更加丰富,从而可以支持更多类型的应用。

Spark 的计算模式也属于 MapReduce 类型,但提供的操作不仅包括 Map 和 Reduce,还提供了包括 Map、Filter、FlatMap、Sample、GroupByKey、ReduceByKey、Union、Join、Cogroup、MapValues、Sort、PartionBy 等多种转换操作,以及 Count、Collect、Reduce、Lookup、Save 等行为操作。

4)Spark 基于 DAG 的任务调度执行机制比 Hadoop MapReduce 的迭代执行机制更优越。

Spark 各个处理结点之间的通信模型不再像 Hadoop 一样只有 Shuffle 一种模式,程序开发者可以使用 DAG 开发复杂的多步数据管道,控制中间结果的存储、分区等。

图 1 对 Hadoop 和 Spark 的执行流程进行了对比。

Hadoop 与 Spark 执行流程对比
图 1  Hadoop 与 Spark 执行流程对比

本文标题:Spark是什么?Spark和Hadoop的区别

本文地址:https://www.hosteonscn.com/5436.html

评论

0条评论

发表评论

邮箱地址不会被公开。 必填项已用*标注