Spark 之 简单介绍

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: 销毁应用程序运行时环境
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小狼躲藏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值