1 spark介绍
- 大数据处理的统一分析引擎
- 统一:
- 对任意类型的数据进行自定义计算
- 结构化、半结构化、非结构化
- 支持Python、Java、Scala、R、SQL等多种语言
- 对任意类型的数据进行自定义计算
- 统一:
-
- ——》借鉴了MapReduce的分治思想。
- 保留了分布式并行计算的优点
- 同时改进了其明显的缺陷:磁盘、内存不断地写入写出数据
- ——>Spark中,中间数据存储在内存中。
- ——>提高了运行速度
- 同时Spark提供了丰富的操作数据的API
- ——>提高了开发速度
- ——》借鉴了MapReduce的分治思想。
1.1 Spark框架
- Spark Core:Spark的核心
- 以RDD(resilent distributed dataset,弹性分布式数据集)为数据抽象
- 提供python,java,scala,R语言的API
- 海量离线数据的批处理计算
- SparkSQL
- 基于SparkCore之上
- 结构化数据的处理模块
- 以SQL语言对数据进行处理
- StructuredStreaming
- 以SparkSQL为基础,进行数据的流式计算
- SparkStreaming
- 以SparkCore为基础,进行数据的流式计算
- 有一定的缺陷:并不是完整的流式计算,而是以“微批”的模式
- 早于StructuredStreaming【如果需要使用流式计算的话,推荐StructuredStreaming】
- MLib
- 以SparkCore为基础,进行机器学习计算
- 内置了大量机器学习库和API算法
- GraphX
- 以SparkCore为基础,进行图计算
- 提供了大量图计算API
2 Spark VS Hadoop
Hadoop | Spark | |
类型 | 基础平台(包括计算、存储、调度) | 纯分布式计算工具 |
场景 | 海量数据的批处理(磁盘迭代计算) | 海量数据的批处理(内存迭代计算、交互式计算) 海量数据的流计算 |
价格 | 对机器要求低,因而较为偏移 | 对内存有要求,因而较为昂贵 |
编程范式 | MapReduce API只有Map和Reduce两个算子,较为底层,算法适应性差(只能按照Map+Reduce的结构编写) | API较为顶层,方便使用 |
数据存储结构 | MapReduce中间计算结果再HDFS磁盘上, 延迟大 | 中间计算结果在内存中,延迟小 |
运行方式 | 任务以进程方式维护,任务启动慢 | 任务以线程方式维护,任务启动块 任务可批量创建,并行能力高 |