基础
spark的应用程序,包括一个Driver programe和若干个Executor
sprak的应用程序入口,负责调度各个运算资源,协调各个worker node上的Executor
运行appilcation的main()函数并创建SparkContext
Apllication运行在work node 上的一个进程
进程负责将数据存在内存或者磁盘
每个Application都会申请各自的Executors来处理任务
在集群上获得外部服务yarn,standalone
集群中任何可以运行Application代码的节点,运行一个或者多个Executor进程
运行在executor的工作单元
SparkContext提交的具体的Action操作
每个job被拆分为很多组任务(task), 每组任务被称为stage,为称为TaskSet
弹性分布式数据集,核心模块和类
根据Job,构建基于stage的DAG,并提交Stage给TaskScheduler
将Taskset提交给Worker node的集群运行并返回结果
Spark API的两种
1. Transformation返回RDD
2. Action返回不是一个RDD,而是一个Scala集合
3. Transformation提交后不执行计算,计算只有在Acion提交后才触发
spark core
RDD
- 弹性:数据集丢失一部分,可以重建
- 容错: Lineage,记录如何从其他RDD转换而来
RDD编程接口
- Transformations:转换操作,返回一个RDD
map/filter/flatmap/sample/groupbykey/reducebykey/union/join/cogroup
crossProduct/mapValues/sort/partitionBy
count/collect/reduce/save
* 窄依赖: 一个父RDD最多被一个子RDD引用,map/filter/union
* 宽依赖: 一个父RDD被多个字RDD引用,groupByKey等操作
* stage之间的依赖形成DAG(有向无环图)
* 窄依赖:RDD尽量在一个stage中
* 宽依赖:shuffer操作,shuffle定义为stage的边界
streaming
Spark Graphx
Spark Shark
Spark SQL
MLBASE
Tachyon
SPARK计算模型
基于内存的迭代计算
- mapreduce每次执行中需要从磁盘读取数据,计算完毕后把数据存入磁盘
- spark基于内存
DAG
- DAG也是快速的原因
- stage之间的依赖形成DAG
- DAG:宽依赖,窄依赖
基于DAG具有精致的作业调度系统
基于DAG具有容错机制
RDD基本概念
创建RDD
- 加载外部数据
- 驱动中平行化集合:spark.parallelize
RDD 操作
惰性