今天稍微没那么忙了,趁着这个时间,准备把spark的启动过程总结一下(),分享给大家。现在使用的spark1.4.1版本
当然前提是你已经把spark环境搭建好了。
1、我们启动spark的时候一般会使用官方提供的启动脚本,start-all.sh ,那我们先来看看,这个脚本做了什么。
# Start all spark daemons.
# Starts the master on this node.
# Starts a worker on each node specified in conf/slaves
以上是它的注释,我们就截取一部分比较重要的代码分析
先分析 master.sh
一、可以看到他使用daemon.sh 启动了Master类,那我们进入Master进行分析一下。
akka 其实就是一个异步通信机制,可以利用它来控制程序的运行。有兴趣的同学可以参考这个:
那接下来我们看看,启用akka之后它会处理什么样类型的数据
它的处理代码放在Master的类里
这是一个重写的方法,它是一个偏函数,偏函数的好处就是可以做模式匹配。
我们可以看看它都匹配了几种类型。(这里我先介绍启动的时候和worker交互使用的几个类型)
1、worker注册
2、与worker建立心跳
二、接着我看看worker启动的时候做了那些工作,以及他和master的交互
worker 模式和master差不多,先看看main函数
worker启动的时候有个比较重要的就是步骤就是向master注册
看看它与master交互的时候使用的几种消息类型
注册成功返回的信息,和定时发送的消息
总结:以上就是我们使用脚本启动spark时候的master、worker调度的过程,当然这只是一部分,启动过程还有大量细节的工作有兴趣的同学可以一起探讨。这只是一个开始,提交任务后,还有大量的工作,
这个我在后面会继续更新。