Spark master和worker启动流程

​​​​​​​一、master启动UML图

1、在start-master.sh脚本中调用Mater.scala中的main方法

2、在main方法中封装spark参数,并调用startRpcEnvAndEndpoint()创建RpcEnv

3、在startRpcEnvAndEndpoint中创建RpcEnv(AkkaSystem),创建masterEndPoint(actor),new Master(),实例化Master

4、实例化Master后会调用Master的Onstart()方法

5、在onStart()中启动webinfo,然后通过定时器循环发送消息给自己

        self.send(CheckForWorkerTimeOut),通过case object执行

6、在case Object中调用timeOutDeadWorker(),检查超时的work

7、在timeOutDeadWorker()中检查超时的worker,调用removeWorker(worker)删除节点,原理就是修改3个集合,其中,会对每个节点尝试15次检查。

8、master启动完成后,在recive()方法中定义大量的case object,等待接受其他actor的请求

​​​​​​​二。work启动UML图

  1. 在worker启动时,通过脚本start-slave.sh脚本中调用main()
  2. 在main()中封装参数,调用startRpcEnvAndEndpoint()创建RpcEnv
  3. startRpcEnvAndEndpoint()中创建RpcEnv和endpiont,并实例化Worker,执行Worker的onStart()方法
  4. 在onStart()方法中主要流程:
    1. 创建工作目录
    2. 启动shuffleservice
    3. 创建worker webui
    4. 调用registerWithMaster()向master注册worker
  5. registerWithMaster()方法中"
    1. 首先worker回向master注册自己
    2. 其次会启动定时任务,不断的向自己发送caseclass,调用reregisterWithMaster()
  6. reregisterWithMaster()方法中,如果之前的注册失败,会重复(15、16次)注册自己
  7. 如果在registerWithMaster()中注册成功,master会向worker发送case object RegisteredWorker,worker接收到消息后,会定时向master发送心跳
  8. master接收到心跳信息后,会修改worker的上次心跳时间
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值