1.RDD
- 概念:RDD(Resilient Distributed Dateset),弹性分布式数据集。
- RDD 的五大特性:
1 .RDD 是由一系列的 partition 组成的。
2 .函数是作用在每一个 partition(split)上的。
3 .RDD 之间有一系列的依赖关系。
4 .分区器是作用在 K,V 格式的 RDD 上
5 .RDD 提供一系列最佳的计算位置。 - RDD 理解图:
- 注意:
1 .textFile 方法底层封装的是读取 MR 读取文件的方式,读取文件之前 先 split,默认 split 大小是一个 block 大小。
2 .什么是 K,V 格式的 RDD?如果 RDD 里面存储的数据都是二元组对象,那么这个 RDD 我们 就叫做 K,V 格式的 RDD。
3 .哪里体现 RDD 的弹性(容错)?partition 数量,大小没有限制,体现了 RDD 的弹性。RDD 之间依赖关系,可以基于上一个 RDD 重新计算出 RDD。
4 .哪里体现 RDD 的分布式?RDD 是由 Partition 组成,partition 是分布在不同节点上的。
5 .RDD 提供计算最佳位置,体现了数据本地化。体现了大数据中“计 算移动数据不移动”的理念。
2.Java 和 Scala 中创建 RDD 的方式
//java
sc.textFile(xx,minnumpartitions)
sc.parallelize(集合,num)
sc.parallelizePairs(Tuple2<xx,xx>集合,num)
//Scala:
sc.textFile(xx,minnumpartitions)
sc.parallelize(集合,num)
sc.makeRDD(集合,num)
3.Spark 任务执行原理
以上图中有四个机器节点,Driver 和 Worker 是启动在节点上的进程,运 行在 JVM 中的进程。
- Driver 与集群节点之间有频繁的通信。
- Driver 负责任务(tasks)的分发和结果的回收。任务的调度。如果 task 的计算结果非常大就不要回收了。会造成 oom。
- Worker 是 Standalone 资源调度框架里面资源管理的从节点。也是 JVM 进程。
- Master 是 Standalone 资源调度框架里面资源管理的主节点。也是 JVM 进程。