前言
相比于传统的Mapreduce批处理框架,Spark的计算速度快了近10倍,一方面得益于Spark基于内存计算,减少的数据的Shuffle,另一方面还得益于Spark优秀的调度管理模块。下面是个人的一点小总结。1、运行模式
local 用于调试
standalone Spark自带的资源调度框架
yarn
mesos
2、宽窄依赖
宽依赖:父RDD只会被一个子RDD使用 一对多 多对一
窄依赖:父RDD被多个子RDD使用 一对多 (会产生磁盘落地Shuffle)
Stage就是按照宽窄依赖来划分的
3、Spark架构设计
- Master 主节点 资源管理 集群状态
- Cluster Manager 集群中获取资源的外部服务如yarn standalone
- Worker 从节点 管理节点的资源 创建Executor 将从节点主机资源分配给Executor
- Application:Spark程序
- Executor :Worker节点上为每个Application启动的进程,该进程负责运行任务并且将结果落地写入磁盘,每Application都有独立的Executor
- Driver:链接Worker的程序 每个Application都有独立的Driver
- Task:Executor上执行的最小工作单元 。每个 stage 里面 task 的数目由该 stage 最后一个