Spark2x介绍
组件架构
图1 Spark2x架构图
Spark2x是基于内存的分布式计算框架,在迭代计算场景下数据可以被缓存到内存中,提供比MapReduce框架更佳的计算性能。但“可以缓存”到内存不代表完全缓存/不走磁盘IO,需要取决于实际数据量与运行场景。
Spark2x的应用运行过程基本可分为下列四个过程,在此简要叙述,方便后续针对性了解:
- Aplication作为进程集运行在集群上,由Driver进行协调。
- Driver去连接Cluster Manager申请Executor资源,并启动ExecutorBackend;由Cluster Manager在不同应用间根据配置调度资源,Driver启动会同时启动DAG调度、Stage划分和Task生成。
- 分发Application代码(传递给SparkContext的Jar或者Python代码)到Executor上。
- 所有Task完成后,Application完毕。
RDD
Spark的核心概念RDD(Resilient Distributed Dataset,弹性分布数据集),指的是只读的,可分区的分布式数据集,这个Dataset可以全部/部分缓存在内存中,在多次计算间重用。
RDD的生成很容易理解,来源于数据的导入、已有数据的转换。
RDD的存储可以选择不同的存储级别来缓存,以便重用(11种存储级别,简单理解为Cache/Persist的各种组合),即便是Cache模式在Shuffle操作时也会自动去持久化中间数据的;默认是存储于内存,内存不足时会溢出写到磁盘中。
父主题: 调优概述