Spark Learning(RDD计算)
来源:互联网 发布:2017优化最好的游戏 编辑:程序博客网 时间:2024/06/06 19:17
RDD计算
原始的RDD经过一系列转换后,会在最后一个RDD上触发一个动作,这个动作生成一个 job , job 被划分为一批计算任务 task 后,会被提交到集群上的计算节点,计算节点中执行计算逻辑的部分称为 executor 。
- Spark中的 task 分为 ShuffleMapTask 和 ResultTask 两种。DAG最后一个阶段为每个结果的 Partition 生成一个 ResultTask ,其余阶段都会生成 ShuffleMapTask 。
Executor通过org.apache.spark.scheduler.Task.run() 调用 ShuffleMapTask 或者 ResultTask 的 runTask() 方法执行Task。
//runTask会调用RDD的iterator方法,伪源码如下:if(storageLevel != StorageLevel.NONE){ //如果存储级别不是NONE,先检查是否有缓存,没有再进行计算 SparkEnv.get.cacheManager.getOrCompute(...)}else{ //如果有CheckPoint那么直接读取结果,没有直接计算 computeOrReadCheckPoint(...)}
SparkEnv包含运行节点所需要的所有环境信息, cacheManager 是负责调用 BlockManager 来管理RDD缓存。SparkEnv除了cacheManger,还包括以下重要的成员变量:
– akka.actor.ActorSystem:运行在该节点的ActorSystem,其中运行在Driver上是sparkDriver,运行在Executor上是sparkExecutor。
– org.apache.spark.MapOutputTracker : 保存ShuffleMapTask输出的位置信息,其中在Driver上的Tracer是 MapOutputTrackerMaster ,在Executor上的Tracer是 MapOutputTrackerWorker 。
– org.apache.spark.shuffle.shuffleManager : Shuffle管理者,其中在Driver上会注册Shuffle信息,Executor会上报和获取Shuffle的信息 。
– org.apache.spark.storage.BlockManager : 提供了Storage模块与其他模块交互接口。
用户在创建org.apache.spark.SparkContext时会创建SparkEnv。
Checkpoint 处理:在job结束后,会判断是否需要Checkpoint,若需要,调用 org.apache.spark.rdd.RDDCheckPointData 的 doCheckpoint() 方法。
- doCheckpoint首先为数据集创建一个目录,然后启动一个新的job计算,并调用 writeToFile() 将计算结果写入新创建的目录;接着创建 org.apache.spark.rdd.CheckpointRDD ;最后清除原始RDD依赖,依赖变为对应的CheckpointRDD。
RDD的计算逻辑是通过 org.apache.spark.rdd.RDD 的 compute() 方法实现的,每个特定的RDD都会实现compute,如CheckpointRDD的compute是直接读取checkpoint数据,HadoopRDD就是读取指定Partition的数据,MapPartitionsRDD就是将用户的转换逻辑作用到指定的Partition上。
- Spark Learning(RDD计算)
- Spark Learning(RDD介绍)
- Learning Spark——RDD编程
- Learning Spark笔记2-RDD介绍
- Learning Spark——RDD常用操作
- Learning Spark笔记9-确定RDD分区
- Spark分布式计算和RDD模型研究
- Spark分布式计算和RDD模型研究
- Spark分布式计算和RDD模型研究
- Spark分布式计算和RDD模型研究
- Spark分布式计算和RDD模型研究
- spark之RDD(四)
- Spark RDD编程(二)
- Spark RDD 练习题(python)
- spark(6)-spark RDD(course14)
- 关联规则、支持度(support)、置信度(confidence)、并运用Spark RDD计算
- 关联规则、支持度(support)、置信度(confidence)、并运用Spark RDD计算
- 【spark RDD】RDD编程
- Java基础部分第二十一节
- 窗口程序
- linux工具
- 实用Unicode
- SDUT 3400 数据结构实验之排序三:bucket sort
- Spark Learning(RDD计算)
- NOIP2017倒计时
- Apache Spark Jobs 性能调优(一)
- 笨办法学python习题16 读写文件
- Codeforces Round #444(Div. 2) A. Div. 64
- 虚拟现实 HTC View瞬移教程
- MOS上关于Linux下开大页内存的文章
- C#基础(12)——构造函数、析构函数
- Database basics