您的位置:首页 > 其它

Standalone模式下Spark 中通信机制的源码分析

2015-03-12 16:04 471 查看
Standalone模式下Spark 中通信机制的源码分析

索引

前提要求

粗略概要

详细实现

资料获取

总结

正文

前提要求

看本博文前要掌握scala基础语言,这个网上有很多免费下载的资料。应该很容易获取。再就是需要有spark内部架构,机制的理解。链接:[(]http://blog.sina.com.cn/s/blog_4d1426660102v5u2.html)]

粗略概要

首先,spark内的通信机制是使用akka完成的,该框架是一个用 Scala 编写的库,用于简化编写容错的、高可伸缩性的 Java 和 Scala 的 Actor 模型应用。Standalone模式下存在的角色:

Client:负责提交作业到Master。

Master:接收Client提交的作业,管理Worker,并命令Worker启动Driver和Executor。

Worker:负责管理本节点的资源,定期向Master汇报心跳,接收Master的命令,比如启动Driver和Executor。

原理图如下:



然而:事实上,Master和Worker要处理的消息要比这多得多,本图只是反映了集群启动和向集群提交运算时候的主要消息处理。

详细实现

源码位置:spark-1.0.0\core\src\main\scala\org\apache\spark\deploy。主要涉及的类:Client.scala, Master.scala和Worker.scala。程序从client进入后的详细走向:





注:该图最好配合着源码分析,且在最后销毁Executor和Dirver的过程没有详细给出。

主要有:

ClientActor:主要做了设置master的连接地址,最后提交了一个RequestSubmitDriver的信息。在receive方法里面,就是等待接受回应了,有两个Response分别对应着这里的launch和kill。

MasterActor:更改自身的状态(RecoveryState),作业调度schedule()(

调度器是这样的,先调度Driver程序,然后再调度App,调度App的方式是从各个worker的里面和App进行匹配,看需要分配多少个cpu)

WorkActor:注册Work(注册成功后开始适时的发送心跳),启动Dirver和Executor

资料获取

这篇博文的写出主要靠以下资料:

spark-1.0.0源码;

http://blog.csdn.net/luccs624061082/article/details/38376521

http://www.tuicool.com/articles/ZJFJ3i

总结

这些东西看了后自己理一下,写写博客确实有收获啊!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐