spark源码阅读笔记

spark源码阅读笔记

ID:14895849

大小:1.65 MB

页数:103页

时间:2018-07-30

spark源码阅读笔记_第1页
spark源码阅读笔记_第2页
spark源码阅读笔记_第3页
spark源码阅读笔记_第4页
spark源码阅读笔记_第5页
资源描述:

《spark源码阅读笔记》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、spark源码解析文档(v1.0)北京东方国信科技股份有限公司目录1spark源码阅读笔记42spark源码之master与worker52.1.1master节点的启动过程分析52.1.2worker节点启动和注册73driver进程的启动113.1.1client节点主要流程113.1.2mster节点主要流程133.1.3woker节点主要流程143.1.4启动流程图164spark境变量184.1sparkConf184.2SparkContext185RDD225.1RDD分区列表。235.2RDD的依赖列表235.2.1窄依赖24

2、5.2.2宽依赖265.3RDD的分区计算函数265.4分区器275.5位置偏好285.6全排序295.6.1水塘采样305.6.2获取分区边界326stage的划分和提交356.1Job的提交356.2stage的划分366.3stage的提交397excutor启动流程437.1CoarseGrainedSchedulerBackend的启动437.2appliction的注册447.3资源调度457.4excutor的启动488task的分发508.1taskscheduler初始化508.2submitMissingTasks518.

3、3resourceOffers528.3.1Task的调度528.3.2任务本地性548.3.3task的分发569task的运行619.1task多线程模型619.1.1MapReduce的多进程模型和Spark的多线程模型629.2Task的执行(一)639.3Shuffle649.4shuffleMapTask-shffleWrite649.4.1HashShuffleManager运行原理659.4.2SortShuffleManager运行原理679.5task的执行(二)779.6shuffleMapTask-shffleRead

4、789.6.1Netty网络传输服务799.7shuffle相关参数调优859.8ResultTask8810存储模块8910.1BlockManager初始化8910.2持久化策略9010.3数据持久化到内存中9110.4数据持久化到磁盘中9910.5数据块的获取1011spark源码阅读笔记spark是由伯克利AMP实验室开发出来的一个非常优秀的数据处理计算框架,利用这个框架我们可以非常容易的开发并行程序,然后在集群上运行,spark社区为我们提供了Java,Scala,python,R语言等很多接口,每个程序员可以选择自己熟悉的语言进行

5、开发。spark在实现过程中,利用了很多现成的技术和思想,例如通信框架选用的是akka和netty,这两种通信技术方案已经在工业界盛行多年,有很多成功的案例可以借鉴;sparkshffle的实现sortshffle的实现其实是完全借鉴了mapreduceshffle实现的思路,只是实现细节不太一样;spark在底层调度的过程中也尽可能的复用了yarn和mesos这两种的资源调度机制。可以这样认为spark其实是hadoop的加强版,他们同根同源利用的都是mapreduce这种先切分后聚合的思想,只是hadoop对于数据处理的思路单一,加工方式

6、过于生硬。spark相比较Mapreduce有下面几个优化的地方。lDAG编程模型。将数据加工链路整理成一个DAG(有向无环图),这其实在理论上给hadoop数据加工过程一个很好的总结,对于数据加工链路比较长的job,spark会将其切分成多个stage对应了Hadoop的多个Map和Reduce逻辑,一个stage包含了多个并行执行的tasks。stage之间通过shffle传递数据,通过依赖相互串联起来。这样的话整个job过程只需要在Hdfs读写一次,不需要像mapreduce那样在hdfs中间写入多次,大大提高了速度。l申请资源方式不同

7、。spark上Excutor对应一个Jvm资源,多个task对应Jvm上的多个线程,Excutor可以被多个task所复用,申请资源次数比较少。Mapreduce每一个task任务会对应一个进程,且相互之间不能复用,申请资源次数比较多。lRDD缓存机制。spark对于中间运算的结果可以缓存在内存,下次再取数据时就不必重新计算,这非常适用于一些迭代式的任务的运行,可以大大提高速度。l容错机制。spark在DAG的基础上建立了每个RDD的血统依赖和检查点机制。当数据加工过程中的某个task中间执行失败后,可以根据其依赖关系以最小代价重启task,

8、而不必像Mapreduce那样从头开始运行task。本次源码阅读用的是spark1.2版本,部署版本为standalone模式,另外说明一下standalone的意

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。