Spark简介

什么是Spark?

Spark 是基于内存计算的通用大规模数据处理框架

Spark已经融入了Hadoop生态系统,可支持的作业类型和应用场景比MapReduce更为广泛,并且具备了MapReduce所有的高容错性和高伸缩性特点。




spark算子PDF下载 spark算子是什么_持久化


为什么会诞生Spark

并不是所有的问题都可以简单的分解成Map和Reduce两步模型处理

Mapreduce 缺点

1、 延迟高: 不适合交互式SQL分析

2、 迭代计算力不从心:斐波那契数列

3、 流式数据处理: 统计网站的PV、UV数据

Spark

一站式解决:

离线批处理

流式计算

在线实时分析

Spark为何快

MapReduce会将中间结果输出到本地磁盘:例如Shuffle过程Map的中间结果


spark算子PDF下载 spark算子是什么_依赖关系_02


有多个MapReduce任务串联时,依赖HDFS存储中间结果的输出对磁盘的IO操作太频繁

例如:hive


spark算子PDF下载 spark算子是什么_数据处理_03


Spark 尽可能减小中间结果写入磁盘,尽可能减少不必要的Sort/Shuffle 反复用到的数据进行Cache 对于DAG进行高度的优化、划分不同的Stage ,使用延迟计算技术。


spark算子PDF下载 spark算子是什么_spark算子_04


弹性分布式数据集RDD

Spark 将数据缓存在分布式内存中

如何实现?rdd

Spark的核心

分布式内存抽象

提供一个高度受限的共享内存模型

逻辑上集中但是物理上是存在在集群的多台机器上

RDD属性和特点

只读

通过HDFS或者其它持久化系统创建RDD

通过transformation将父RDD转化得到新的RDD

RDD 上保存着前后的之间的依赖关系

Partition

基本组成单位,RDD在逻辑上按照Partition分块

分布在各个节点上

分片数量决定并行计算的粒度

RDD中保存如何计算每一个分区的函数

容错

失败自动重建

如果发生部分分区数据丢失,可以通过依赖关系重新计算

Spark编程模型

1、 对于RDD有四种类型的算子

Create:

SparkContext.textFile()

SparkContext.parallelize()

Transformation

作用于一个或者多个RDD,输出转换后的RDD

例如:map,filter,groupby

Action:

会触发Spark提交作业,并将结果返回Diver Program

例如:reduce,countByKey

Cache:

cache 缓存

persist持久化

惰性运算 遇到Action时才会真正的执行