摘要: 一直想不明白什么是RDD,为什么叫RDD,RDD的第一个单词Resilient意义是什么?为什么这样设计RDD。 短短的几百字,是在慢慢摸索过程中的一点理解,说说我对RDD中的R的理解。 RDD还包含了一个分布式的概念,后面再找时间来研究 阅读全文
posted @ 2017-04-21 10:28 Ivan.Jiang 阅读(387) 评论(1) 推荐(0) 编辑
摘要: RDD是每个分区独立执行,并行执行的,执行路径 Executor.launchTask() Task.runTask() RDD.iterator RDD.compute() or from checkpoin 有2种类型的Task, ShuffleMapTask 和 ResultTask。分别对应 阅读全文
posted @ 2016-10-29 23:01 Ivan.Jiang 阅读(206) 评论(0) 推荐(0) 编辑
摘要: RDD的依赖构成了它的血统(linage) 叫族谱更容易理解 有2种依赖关系:窄依赖和宽依赖 构成窄依赖关系的RDD,每一个分区对应一个task(一个线程),所有task可以并行运行; 宽依赖关系的RDD,要等到父RDD所有分区计算结束后,进行Shuffle,然后才能开始计算。 一个RDD可以依赖多 阅读全文
posted @ 2016-10-29 22:42 Ivan.Jiang 阅读(236) 评论(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) 编辑
摘要: 这个可能是DAG的魅力之一了。RDD的运行是懒执行的,DAG能够整合rdd的运行过程,让很多的操作集中在一个线程里运行连续执行,避免了磁盘和网络io 阅读全文
posted @ 2016-10-17 19:38 Ivan.Jiang 阅读(501) 评论(0) 推荐(0) 编辑
摘要: spark源码里面,使用得很多的一个方法 ClosureCleaner.clean() 阅读全文
posted @ 2016-10-16 18:09 Ivan.Jiang 阅读(1621) 评论(1) 推荐(0) 编辑
摘要: 使用自定义排序方法实现二次排序 阅读全文
posted @ 2016-09-19 16:51 Ivan.Jiang 阅读(2197) 评论(0) 推荐(0) 编辑
摘要: spark进行二次排序,这里使用一种错误的做法,导致2个问题: 1, 按照复合key的字典排序结果并非我们所期望 2, 复合key的做法,使rdd的dize增加了1倍 阅读全文
posted @ 2016-09-19 15:31 Ivan.Jiang 阅读(658) 评论(0) 推荐(0) 编辑
摘要: kafka -> storm -> hbase,完成wordcount的计算 阅读全文
posted @ 2016-08-26 10:55 Ivan.Jiang 阅读(3093) 评论(1) 推荐(1) 编辑