Spark_01_基本介绍
spark 系列配套代码地址: https://github.com/Cheers0606/spark-learing.git
Spark 是一个支持 多语言 客户端开发 的 基于内存的 通用并行计算框架,目的是 让数据分析更加快速。跟它相对的是其它的传统⼤数据技术 Hadoop的MapReduce以及Flink流式实时计算引擎等。
Spark包含了⼤数据领域常⻅的各种计算框架:⽐如Spark Core⽤于离线计算,Spark SQL⽤于SQL的交互式查询,Spark Streaming⽤于实时流式计算,Spark MLlib⽤于机器学习,Spark GraphX⽤于图计算等。
1. Spark的核心模块

- Spark core:Spark Core中提供了Spark最基础与最核⼼的功能,Spark 其他的功能如:Spark SQL、Spark Streaming、GraphX、MLlib 都是在 Spark Core的基础上进⾏扩展的。
- Spark SQL:通过SQL的方式来操作Spark读取的数据
- Spark Streaming:SparkStreaming 用于实时计算中(流处理),Spark streaming的处理思想是:只要我处理的批次间隔足够小,那么我就是实时处理(微批处理)
- Spark MLlib:机器学习相关的算法库。MLlib 不仅提供了模型评估、数据导⼊等额外的功能,还提供了⼀些更底层的机器学习原语。
- Spark GraphX:面向图计算的一些框架和算法库
2. Spark的特点
- 开发上手快:哪怕没有学习过MapReduce,只需要简单几行代码,就可以完成一个计算流程。(因为Spark封装了很多的方法以及算子)
- Spark支持多语言开发:java、scala、python、SQL
- 与hadoop可以无缝集成:Spark是一个通用的计算框架,本身是在hadoop之后发展出来的,spark+hadoop(hive)的组合是行业内大数据的主流组合。
- 活跃度高:虽然已经诞生很多年,但是目前还是非常火热的一个计算框架,经过了很多公司的生产实践。
3. Spark和MapReduce的对比
MapReduce: 基于磁盘的批处理模型,分为 Map和 Reduce两阶段,中间数据需写入磁盘。这种设计导致大量 I/O 开销,尤其对迭代计算效率较低。
Spark: 采用 内存计算和弹性分布式数据集(RDD)模型,中间结果可缓存于内存中复用,减少磁盘交互。通过 DAG(有向无环图)调度优化任务执行顺序,减少 Shuffle 次数。
| 场景 | MapReduce(慢、稳) | Spark(快、不是特别稳) |
|---|---|---|
| 离线批处理 | ✔️ 海量数据 ETL、日志分析(低成本存储) | ✔️ 中小规模数据批处理(高速度要求) |
| 迭代计算 | ❌ 效率低(需多次磁盘读写) | ✔️ 机器学习、图计算(如 GraphX) |
| 实时流处理 | ❌ 不支持 | ✔️ 微批处理(Spark Streaming) |
| 交互式查询 | ❌ 延迟高 | ✔️ Spark SQL(低延迟 Ad-hoc 查询) |
评论
评论插件加载失败
正在加载评论插件