1.1 Spark 是什么

image.png

1.2 Spark and Hadoop

时间节点

Hadoop

  • 2006 年 1 月,Doug Cutting 加入 Yahoo,领导 Hadoop 的开发
  • 2008 年 1 月,Hadoop 成为 Apache 顶级项目
  • 2011 年 1.0 正式发布
  • 2012 年 3 月稳定版发布
  • 2013 年 10 月发布 2.X (Yarn)版本

Spark

  • 2009 年,Spark 诞生于伯克利大学的 AMPLab 实验室
  • 2010 年,伯克利大学正式开源了 Spark 项目
  • 2013 年 6 月,Spark 成为了 Apache 基金会下的项目
  • 2014 年 2 月,Spark 以飞快的速度成为了 Apache 的顶级项目
  • 2015 年至今,Spark 变得愈发火爆,大量的国内公司开始重点部署或者使用 Spark

    功能节点

    Spark

  • Spark 是一种由 Scala 语言开发的快速、通用、可扩展的大数据分析引擎

  • Spark Core 中提供了 Spark 最基础与最核心的功能
  • Spark SQL 是 Spark 用来操作结构化数据的组件。通过 Spark SQL,用户可以使用 SQL 或者 Apache Hive 版本的 SQL 方言(HQL)来查询数据。
  • Spark Streaming 是 Spark 平台上针对实时数据进行流式计算的组件,提供了丰富的

处理数据流的 API。
由上面的信息可以获知,Spark 出现的时间相对较晚,并且主要功能主要是用于数据计算,
所以其实 Spark 一直被认为是 Hadoop 框架的升级版。

1.3 Spark or Hadoop

Spark 和Hadoop 的根本差异是多个作业之间的数据通信问题 : Spark 多个作业之间数据
通信是基于内存,而 Hadoop 是基于磁盘。
在绝大多数的数据计算场景中,Spark 确实会比 MapReduce 更有优势。但是 Spark 是基于内存的,所以在实际的生产环境中,由于内存的限制,可能会 由于内存资源不够导致 Job 执行失败,此时,MapReduce 其实是一个更好的选择,所以 Spark 并不能完全替代 MR。

1.4 Spark 核心模块

image.png

  • Spark Core

Spark Core 中提供了 Spark 最基础与最核心的功能,Spark 其他的功能如:Spark SQL,
Spark Streaming,GraphX, MLlib 都是在 Spark Core 的基础上进行扩展的

  • Spark SQL

Spark SQL 是 Spark 用来操作结构化数据的组件。通过 Spark SQL,用户可以使用 SQL
或者 Apache Hive 版本的 SQL 方言(HQL)来查询数据。

  • Spark Streaming

Spark Streaming 是 Spark 平台上针对实时数据进行流式计算的组件,提供了丰富的处理
数据流的 API。

  • Spark MLlib

MLlib 是 Spark 提供的一个机器学习算法库。MLlib 不仅提供了模型评估、数据导入等
额外的功能,还提供了一些更底层的机器学习原语。

  • Spark GraphX

GraphX 是 Spark 面向图计算提供的框架与算法库。