Spark核心概念——RDD
RDD(抽象数据集的统称Spark是对RDD的其中一种实现):Resilient Distributed Datasets,弹性分布式数据集
1.分布在集群中的只读对象集合(由多个Partition构成)
2.可以存储在磁盘或内存中(多种存储级别)
3.通过并行“转换”操作构造
4.失效后自动重构

RDD基本操作(operator)
1.Transformation(转换)
——可通过scala集合或者Hadoop数据集构造一个新的RDD
——通过已有的RDD产生新的RDD
——例:map,filter,groupBy,reduceBy
2.Action(行动)
——通过RDD计算得到一个或者一组值
——举例:count,collect,save

Spark提供Transformation与Action实现
Spark核心概念_存储

Spark程序架构
Spark核心概念_分布式_02

Spark On YARN运行流程
只要和ResourceManager正常通信就可以作为客户端!同时提交多个作业在资源够用的情况下可以同时执行。
Spark核心概念_存储_03

Wordcount——生成逻辑查询计划

val textFile = sc.textFile(args(1))
val result = textFile
    .flatMap(line => line.split("\\s+"))
    .map(word=>(word,1))
    .reduceByKey(_+_)
result.saveTextFile(args(2))

RDD[String] — RDD[String] — RDD[(String,Int)] — RDD[(String,Int)]

生成逻辑查询计划:
Spark核心概念_hadoop_04
生成物理查询计划(可以执行阶段):
——划分阶段
——生成Task
Spark核心概念_存储_05
Spark核心概念_数据集_06

Wordcount——调度并执行task
Spark核心概念_存储_07

Wordcount——问题讨论
1.Spark中task类型(两种)
——shuffleMapTask
——ResultTask
2.每个stage的task数目?
——First Stage:由hdfs block或者hbase regioin数目决定
(例子:最新版本hadoop中hdsf blcok默认128M,如果是1G数据默认划分为8个stage。但是也可以用户自定义调优。)
——Other Stage:由用户设置,默认与第一阶段相等,如下图第二阶段:
Spark核心概念_数据集_08

Spark基本概念总结
一个driver对应一个application,几个action就是几个job。一个job可以划分为多个stage。
stage可以类比mapreduce!stage之间是并行关系。每个stage可以有多个task。
Spark核心概念_spark_09

Spark引擎内部执行流程:
(前三个阶段在driver端执行,第四个阶段在executor上分布式执行)
Spark核心概念_分布式_10