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

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
  • 资料获取
    这篇博文的写出主要靠以下资料:

    1. spark-1.0.0源码;
    2. http://blog.csdn.net/luccs624061082/article/details/38376521
    3. http://www.tuicool.com/articles/ZJFJ3i
  • 总结
    这些东西看了后自己理一下,写写博客确实有收获啊!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值