1.1 Spark是什么?
Spark 是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。
1.2 Spark Vs Hadoop
Spark | Hadoop | |
---|---|---|
数据共享 | 基于内存 | 基于磁盘 |
语言 | Scala语言开发 | Java编写 |
组件 | Spark Core, Streaming, SQL,Milb,GraphX | Mapreduce,HDFS,HBase |
数据处理 | 流处理 (批处理) | 批处理 |
1.3 如何选择spark 或者Hadoop
- Hadoop MapReduce 由于其设计初衷并不是为了满足循环迭代式数据流处理,因此在多并行运行的数据可复用场景(如:机器学习、图挖掘算法、交互式数据挖掘算法)中存 在诸多计算效率等问题。
- Spark 就是在传统的 MapReduce 计算框 架的基础上,利用其计算过程的优化,从而大大加快了数据分析、挖掘的运行和读写速度,并将计算单元缩小到更适合并行计算和重复使用的 RDD 计算模型。
- Hadoop 的数据共享是基于磁盘的,每一次的MR操作得到的结果都会写入磁盘,再一次进行MR操作同样从磁盘继续获取数据,所以对于数据的多次操作或分析,Hadoop的效率低。
- 但是Spark的数据共享是基于内存的,只有第一次读取数据时通过磁盘读入,然后通过函数式编程对数据进行处理,多个作业之间通信通过内存,而hadoop是基于磁盘的。
- Spark在shuffle(reduceBy,groupBy,join)操作的时候会写入磁盘,所以应该尽量避免使用这些操作,因为shuffle操作是耗时严重。
- Spark的缓存机制比HDFS的缓存机制高效。
- 由于spark是基于内存的,所以在实际的生产环境中,由于内存的限制,可能会由于内存资源不足导致Job执行失败,此时,MapReduce会是一个更好的选择。
1.4 Spark核心模块
-
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 面向图计算提供的框架与算法库。
本篇主要参考B站尚硅谷大数据技术SparkCore,侵权请联系作者删除。