RDD 的初步了解
数据存储
RDD 是一种集合,用来存储和管理数据
分布式存储
分布式运算思想是 将大数据量数据分成多份,使用多台机器处理,待所有机器处理完毕汇总到同一台机器上,RDD中数据切分为多个分区,对于开发者是封闭的,可以通过 foreachPartition 遍历当前RDD的分区
内存优先
默认情况下数据可以缓存在内存中则不通过磁盘
数据可靠性
RDD之间有强的血缘关系,在程序运行时,中间某个RDD出现丢失或错误情况,通过血缘关系重新运算,恢复不是全量数据进行重算,只是需要重新计算的分区数据,对于一些依赖链较长的可以通过checkPoint来进行持久化RDD
数据分析
RDD 之间有转换算子和行动算子对数据进行操作
程序调度
Driver
构建spark的上下文实例(SparkContext),程序的主入口,包含所有的代码,记录每一个RDD的依赖关系
Job
在整个程序中,每次action 操作会产生一个job 而转换算子并不会产生job
stage
每一个job 由多个Stage 组成,依次执行,只要涉及到数据重组(比如shuffle) 就会产生新的stage,每一个stage结束,数据在分区中会发生变化
task
一个stage包含多个task,一个task 一次只处理一个分区中数据
master
在spark提交程序时,需要与Master服务通信,申请运行任务所需的资源
worker
当前程序申请的运算资源由worker服务提供
executor
用于执行运算任务(Task)的进程,Executor 进程负责接收Driver进程派发过来运算任务(Task)