宽窄依赖、DAG有向无环图、Stage
1、Spark架构
- Driver,执行main方法,初始化sparkcontext
- Cluster Manager,集群管理器,Standalone为MasterYarn模式下为RM和AM
- WorkerNode,是工作节点
- Executor,工作节点内的进程、专门用于计算,可以分配设置其CPU核心数、内存容量等。
2、依赖(血缘)关系
依赖关系是spark高容错的基础
宽依赖ShuffleDpendency
·有shuffle,父RDD一个分区会被子RDD多个分区依赖(1指多)
窄依赖NarrowDependency
·无shuffle,父RDD一个分区只会被子RDD以一个分区依赖(1指1)
·多个窄依赖可以合并,形成pipeline(管道),如果有一个分区数据丢失,只需从对应父RDD对应分区重新计算即可,无需重新计算整个任务。
·同一个stage都是窄依赖
3、DAG & Stage
DAG开始:创建RDD
DAG结束:Action结束
Shuffle意味着Action划分Stage,每个Stage内可以多pipeline(pipeline作为一个task)并行执行。也就意味着一个Task(也就是线程?)是运行在executor的最小单位。
Q:executor可以并发吗?若不行taskNum=线程num?