摘要: RDD是每个分区独立执行,并行执行的,执行路径 Executor.launchTask() Task.runTask() RDD.iterator RDD.compute() or from checkpoin 有2种类型的Task, ShuffleMapTask 和 ResultTask。分别对应 阅读全文
posted @ 2016-10-29 23:01 Ivan.Jiang 阅读(205) 评论(0) 推荐(0) 编辑
摘要: RDD的依赖构成了它的血统(linage) 叫族谱更容易理解 有2种依赖关系:窄依赖和宽依赖 构成窄依赖关系的RDD,每一个分区对应一个task(一个线程),所有task可以并行运行; 宽依赖关系的RDD,要等到父RDD所有分区计算结束后,进行Shuffle,然后才能开始计算。 一个RDD可以依赖多 阅读全文
posted @ 2016-10-29 22:42 Ivan.Jiang 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 为了让Task对象能够重用,在Executor中,每一个分区数据都会有一个Task去进行计算,计算完以后,就要释放taslk的内存,包括堆内和堆外内存,并且,要把Thread Local的内存也释放掉(TLA)。 org.apache.spark.scheduler.Task run() { try 阅读全文
posted @ 2016-10-29 22:01 Ivan.Jiang 阅读(159) 评论(0) 推荐(0) 编辑