令人费解的Spark任务流咕泡学院
【课程介绍】
1、 build operator DAG:主要是RDD转化成为DAG。
2、 split graph into stages oftasks:主要完成了finalStage的创建和Stage的划分。做好stage和task的准备工作,提交taskSet。
3、 launch tasks via clustermanager:使用集群管理者clustermanager分配资源和任务,任务失败,有一个自己的重构和容错机制
4、 executor tasks:执行任务,把中间结果和最终结果存储到存储体系中。
RDD:是分布式的弹性的数据集。
为什么要用RDD。
1、 RDD是一个容错的并行的数据结构,可以控制将数据存储到内存或者磁盘,能够获取数据的分区数据。RDD里边提供了scala的函数操作。例如:map、flatMap、filter、reduce。这些操作很多都是transformation。此外还有join、groupBy、groupByKey、reduceByKey。这些都是可以作为spark的RDD的数据处理。
2、 依赖的划分:一个RDD可以包含一个或者多个分区,每个分区的数据其实是数据集的一个小片段。创建DAG的时候会把RDD使用依赖关系进行串联。每个RDD都有自己的依赖。
3、 上游的RDD计算过程中允许多个节点并发的执行。分区数量决定了并发任务的多少。
4、 容错:传统的数据库容错,使用的是日志的方式容灾,数据的恢复都是依赖于重新执行日志中的SQL,hadoop使用的备份机制。RDD本身是一个不可变的数据集,当某个Worker几点计算任务失败,可以是用DAG重新调度计算。但是流式计算中必须存储日志和检查点,进行数据的恢复。