10 2015 档案
摘要:本文参考:http://www.cnblogs.com/cenyuhai/p/3826227.html在数据流动的整个过程中,最复杂最影响性能的环节,就是 Shuffle 过程,本文将参考大神的博客,根据 Spark-1.5 的代码,再次走读一遍。Shuffle 过程Spark 中最经典的 Shuf...
阅读全文
摘要:http://jerryshao.me/architecture/2013/10/08/spark-storage-module-analysis/大神写的太好了,我就不重复造轮子了。Spark 1.5 与 Spark 0.7 在 Storage 模块的结构几乎一致,改变的地方在于:1. RpcEn...
阅读全文
摘要:Spark Scheduler 模块的文章中,介绍到 Spark 将底层的资源管理和上层的任务调度分离开来,一般而言,底层的资源管理会使用第三方的平台,如 YARN 和 Mesos。为了方便用户测试和使用,Spark 也单独实现了一个简单的资源管理平台,也就是本文介绍的 Deploy 模块。一些有经...
阅读全文
摘要:Scheduler 模块中最重要的两个类是DAGScheduler 和 TaskScheduler。上篇讲了DAGScheduler,这篇讲TaskScheduler。TaskScheduler前面提到,在 SparkContext 初始化的过程中,根据 master 的类型分别创建不同的 Task...
阅读全文
摘要:在阅读 Spark 源代码的过程中,发现单步调试并不能很好的帮助理解程序。这样的多线程的分布式系统,更好的阅读源代码的方式是依据模块,分别理解。在包 org.apache.spark 下面有很多下一级的包,如 deploy, storage, shuffle, scheduler 等。这就是一个个系...
阅读全文
摘要:最近在看各种博客,学习 spark 源代码。网上对源代码的分析基本都是基于 0.7, 0.8, 1.0 的代码,而现在的发行版已经是 1.5 了。所以有些代码不大对的上。比如函数 RDD.map()旧版本是:def mapU: ClassTag: RDD[U] = new MappedRDD(thi...
阅读全文