Spark编程模型
一个spark用户程序主要包含一个驱动程序, 该驱动程序执行用户的main函数并将各种算子分布到集群中并运行.
Spark中最主要的抽象是将数据集抽象成RDD, 这是一种分布到各个节点上的数据集合,并能够被并行处理.
RDD是容错的, 当一个节点宕掉后, 丢失的RDD可被重构.
Spark另外一个抽象是可被并行算子共用的共享变量.
默认情况下, spark会将算子转化成一组任务, 并调度到各个节点上来执行.他会为每个任务拷贝一个算子中的变量.有些情况下, 这些任务需要共享一些变量, 或者任务与驱动程序之间共享一个变量, 而spark的共享变量正是为此设计的.
Spark支持两种共享变量:
1. 广播变量: 可以缓存到各个节点的内存中的变量, 通常只读, 类似Hadoop中DistrubuteCache的数据.
2. 累加器: 只能用来做加法, 例如计数, 求和, 类似Hadoop中的Counter.
分布式数据集
Spark中最核心的概念是弹性分布式数据集(RDD), 一个有容错机制, 可以被并行操作的集合.
目前主要有两种类型的RDD,
1. 并行集合
接收一个已经存在的scala集合, 并在它上面运行各种并发计算.
并行集合通过调用SparkContext的parallelize方法, 在一个已经存在的Scala集合上创建而来.
2. Hadoop数据集
类似于MapReduce模式, 可以在一个数据片的每条记录上, 运行各种函数, 但比MapReduce更加灵活.
这两种集合继承自相同的父类,可以通过一些列相同的算子进行操作.
分布式数据集操作
分布式数据集支持两种操作
1. 转换: 根据现有的RDD数据集创建一个新的RDD数据集
2. 动作: 在RDD数据集运行计算后, 将计算结果传给驱动程序或者写入存储系统.
RDD缓存
用户可以使用persist或cache方法将任意RDD数据集缓存到内存或磁盘中.RDD是能够容错的, 如果一个RDD分片丢失了, Spark能够通过最初构建它的转化算法重构它, 此外, 用户可以使用不同的缓存级别对RDD进行缓存.
共享变量
Spark提供了两种有限的共享变量
1. 广播变量:
广播变量允许用户保留一个制度的变量并将之缓存到每台机器上(并非每个任务单独保存一根副本).
2. 累加器:
累加器支持加法操作的变量.可以高效地并行化, 用户可以用它实现计数器和变量求和, Spark原生支持Int和Double类型的计数器, 用户可以根据添加新的类型.
Spark基本架构
Spark中每个应用程序维护了自己的一套运行时环境. 该运行时环境在应用程序开始运行时构建, 在运行结束时销毁.
总体来说, 一个Spark运行时环境由四个阶段构成:
阶段1: 构建应用程序的运行时环境
阶段2: 将应用程序转换成DAG图.
阶段3: 按照依赖关系调用
阶段4: 销毁应用程序运行时环境
一个spark用户程序主要包含一个驱动程序, 该驱动程序执行用户的main函数并将各种算子分布到集群中并运行.
Spark中最主要的抽象是将数据集抽象成RDD, 这是一种分布到各个节点上的数据集合,并能够被并行处理.
RDD是容错的, 当一个节点宕掉后, 丢失的RDD可被重构.
Spark另外一个抽象是可被并行算子共用的共享变量.
默认情况下, spark会将算子转化成一组任务, 并调度到各个节点上来执行.他会为每个任务拷贝一个算子中的变量.有些情况下, 这些任务需要共享一些变量, 或者任务与驱动程序之间共享一个变量, 而spark的共享变量正是为此设计的.
Spark支持两种共享变量:
1. 广播变量: 可以缓存到各个节点的内存中的变量, 通常只读, 类似Hadoop中DistrubuteCache的数据.
2. 累加器: 只能用来做加法, 例如计数, 求和, 类似Hadoop中的Counter.
分布式数据集
Spark中最核心的概念是弹性分布式数据集(RDD), 一个有容错机制, 可以被并行操作的集合.
目前主要有两种类型的RDD,
1. 并行集合
接收一个已经存在的scala集合, 并在它上面运行各种并发计算.
并行集合通过调用SparkContext的parallelize方法, 在一个已经存在的Scala集合上创建而来.
2. Hadoop数据集
类似于MapReduce模式, 可以在一个数据片的每条记录上, 运行各种函数, 但比MapReduce更加灵活.
这两种集合继承自相同的父类,可以通过一些列相同的算子进行操作.
分布式数据集操作
分布式数据集支持两种操作
1. 转换: 根据现有的RDD数据集创建一个新的RDD数据集
2. 动作: 在RDD数据集运行计算后, 将计算结果传给驱动程序或者写入存储系统.
RDD缓存
用户可以使用persist或cache方法将任意RDD数据集缓存到内存或磁盘中.RDD是能够容错的, 如果一个RDD分片丢失了, Spark能够通过最初构建它的转化算法重构它, 此外, 用户可以使用不同的缓存级别对RDD进行缓存.
共享变量
Spark提供了两种有限的共享变量
1. 广播变量:
广播变量允许用户保留一个制度的变量并将之缓存到每台机器上(并非每个任务单独保存一根副本).
2. 累加器:
累加器支持加法操作的变量.可以高效地并行化, 用户可以用它实现计数器和变量求和, Spark原生支持Int和Double类型的计数器, 用户可以根据添加新的类型.
Spark基本架构
Spark中每个应用程序维护了自己的一套运行时环境. 该运行时环境在应用程序开始运行时构建, 在运行结束时销毁.
总体来说, 一个Spark运行时环境由四个阶段构成:
阶段1: 构建应用程序的运行时环境
阶段2: 将应用程序转换成DAG图.
阶段3: 按照依赖关系调用
阶段4: 销毁应用程序运行时环境