spark架构
- Spark是一种快速、通用、可扩展的大数据分析引擎
-
Spark是基于内存计算的大数据并行计算框架
Spark Core :实现了 Spark 的基本功能,包含任务调度、内存管理、错误恢复、与存储系统 交互等模块
Spark SQL:使用 SQL 或者 Apache Hive 版本的 SQL 方言(HQL)来查询数据,Spark SQL 支持多种数据源,比 如 Hive 表、Parquet 以及 JSON 等。
Spark Streaming:是 Spark 提供的对实时数据进行流式计算的组件
Spark MLlib:提供常见的机器学习(ML)功能的程序库
Spark特点
- 快:基于内存来高效处理数据流
- 易用:Spark支持Java、Python和Scala的API
- 通用:Spark提供了统一的解决方案
- 兼容性:Spark可以非常方便地与其他的开源产品进行融合
RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象。
RDD特点 :
- 分区:逻辑上是分区的
- 只读
- 依赖
- 缓存
- CheckPoint
为什么会产生RDD?
- 传统的MapReduce 虽然有自动容错,平衡负载和拓展性优点。缺点:采用了非循环流动模型,使得在迭代计算中要进行大量的磁盘IO操作,RDD解决了这一缺点的抽象方法
- RDD以函数式编程来操作集合,进行并行操作,可以把RDD的结果进行缓存,方便进行多次重用,避免重复计算
窄依赖:窄依赖指的是每一个父RDD的Partition最多被子RDD的一个Partition使用
宽依赖:宽依赖指的是多个子RDD的Partition会依赖同一个父RDD的Partition
血统的好处: 当前某一个rdd的分区数据丢失了,后期可以通过血统这一层关系重新计算恢复得到
rdd的缓存
-
第一种就是cache、第二种就是persist
当然并不是这2个方法执行后就立即触发缓存操作,后面需要有一个action操作,才会触发缓存的执行 -
cache:默认是把数据缓存在内存中,其本质是调用了persist方法
-
persist:它可以把数据缓存在磁盘中