spark架构

  • 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:它可以把数据缓存在磁盘中