1.Driver program
包含程序的main()方法,RDDs的定义和操作。它管理很多节点,我们称为executors
image.png
2.SparkContext
- Driver programs通过SparkContext对象访问Spark
- SparkContext对象代表和一个集群的连接。
在shell中SparkContext自动创建好了,就是sc。
3.RDDs
- RDDs(Resilient distributed datasets(弹性分布式数据集))。
- RDDs并行的分布在集群中。
- RDDs是Spark分发数据和计算的基础抽象类。
- 一个RDD是一个不可改变的分布式集合对象
- Spark中所有的计算都是通过RDDs的创建、转换、操作完成的。
- 一个RDD内部由很多的partitions(分片)组成的。
4.RDDs血统关系图
Spark维护着RDDs之间的依赖关系和创建关系,叫做血统关系图。
Spark使用血统关系图来计算每个RDD的需求和恢复丢失的数据。
image.png
5.延迟计算(Lazy Evaluation)
- Spark对RDDs的计算是,他们第一次使用action操作的时候,这种方式在处理大数据的时候特别有用,可以减少数据的传输。
- Spark内部记录metadata表名transformations操作已经被响应了。
- 加载数据也是延迟计算,数据只有在必要的时候,才会被加载进去。
6.RDD.persist()
默认每次在RDDs上面进行action操作时,Spark都重新计算RDDs。如果想重复利用一个RDD
,可以使用RDD.persist() unpersist()方法从缓存中移除
RDD.persist(MEMORY_ONLY)
RDD.persist(MEMORY_ONLY_SER) 序列化消耗CPU
RDD.persist(DISK_ONLY)
网友评论