一、Spark介绍
- Spark是用于大规模数据处理的统一分析引擎
- Spark借鉴了MapReduce思想发展而来,保留了其分布式并行计算的优点并改进了其明显的缺陷.让中间数据存储在内存中提高了运行速度、并提供丰富的操作数据的API提高了开发速度
二、RDD介绍
RDD(分布式内存抽象),使得程序员可以在大规模集群中做内存计算,并且有一定的容错方式,是Spark的核心数据结构
三、Spark编程模型(数据结构)
- RDD:弹性分布式数据集,认为是列表List
- Spark框架将要处理的数据封装到集合RDD中,调用RDD中的函数处理数据
- RDD数据可以放到内存中,内存不足可以放到磁盘中
四、Spark Task任务运行方式
- MapReduce中Task是以进程Process方式运行,Spark中Task以线程Thread方式运行
- 线程Thread运行在进程Process中,启动和销毁相对于进程更快
五、Spark特点
1.速度快
由于Spark支持内存计算,并且通过DAG(有向无环图)执行引擎支持无环数据流,所以官方宣称其在内存中的运算速度要比Hadoop的MapReduce快100被,在硬盘中要快10倍
2.易于使用
Spark支持包括Java、Scala、Python、R和SQL语言在内的多种语言
3.通用性强
在Spark的基础上,Spark还提供了包括Spark SQL、Spark Streaming、MLib及GraphX在内的多个数据库
4.多种运行方式
Spark可以多种方式运行,比如在Hadoop上,也支持Standalone的独立运行模式
六、Spark框架的模块
1.Spark Core
- 实现了Spark的基本功能,包含RDD、任务调度、内存管理、错误恢复、与存储系统交互等模块.
- 数据结构:RDD
2.Spark SQL
- Spark用来操作结构化数据的程序包,通过Spark SQL,可以使用SQL操作数据
- 数据结构:DataSet/DataFrame = RDD + Schema
3.Spark Streaming
- Spark提供的对实时数据进行流式计算的组件,提供了用来操作数据流的API
- 数据结构:DStream = Seq[RDD],DStream离散化流
4.MLib
- 提供常见的机器学习(ML)功能的程序库.包括分类、回归、聚类、协同过滤等,还提供了模型评估、数据导入等额外的支持功能
- 数据结构:RDD或者DataFrame
5.GraphX
- Spark中用于图计算的API,性能良好,拥有丰富的功能和运算符,能在海量数据上自如地运行复杂的图算法
- 数据结构:RDD或者DataFrame