Spark RPC 之 Master 启动并提供服务


概要

上篇文章Spark RPC概述介绍了Spark RPC的实现思路,有了上述基础,我们看一个具体例子,就是standalone模式下的Master和Worker,主要关注Worker如何启动并向Master注册、保持心跳。
在本文中,我们将介绍Master如何启动,并对外提供服务的。

1. Class Master解析

Master是standalone模式下的主节点,查看定义
在这里插入图片描述
Master继承ThreadSafeRpcEndpoint,ThreadSafeRpcEndpoint继承RpcEndpoint 。RpcEndpoint的生命周期又是: onStart -> receive(receiveAndReply)* -> onStop (不了解RpcEndpoint的同学点击这里SparkRpc 之 RpcEndpoint、ThreadSafeRpcEndpoint、RpcEnvFactory),所以我们理所当然的关心Master的这四个对应方法。

1.1 Master之onStart()

在这里插入图片描述

  1. 启动基于jetty的webUI。
  2. 启动定时任务,默认每60s send CheckForWorkerTimeOut信息给Master(如上图注释处),检测Worker连接情况。根据上篇文章,send方法不需要返回值,信息发送给 Master的receive方法,receive使用scala模式匹配处理信息: 检测有没有超时未发送DeadWorkers,,如果有,那么就清除此Worker的信息(RemoveWorker见Master清理信息一文,其他如下 :
    在这里插入图片描述
    在这里插入图片描述
    上面几段代码,可以清晰的看出Master根据条件lastHeartbeat < currentTime - WORKER_TIMEOUT_MS判断Worker是否还在发送心跳,如果过期将其从对应集合中删除lastHeartbeat是Worker最后一次连接的时间,后面讲心跳(Heartbeat)时会讲到。
  3. 如果配置spark.master.rest.enabled=true,启动rest Server。(参考文章Spark-Submit任务提交中的网关提交方式
  4. 启动度量系统,persistenceEngineleaderElectionAgent分别是关于master recoveryleader选举。
    在这里插入图片描述

1.2 Master之receive()

receive方法接收EndpointRef send方法发送的信息,如上面说到的定时检查Worker状态,定义如下
在这里插入图片描述
我将源码简单整理,如上图所示,这篇文章只关心第一个部分即检测Worker状态和心跳。

  1. Worker状态的检测上面刚分析过。
  2. 心跳机制 : 处理Worker发过来的信息,如果worker信息已经存在则更新lastHeartbeat(在onStart方法中提到),否则重新连接master,也就是注册,下面receiveAndReply方法会讲到。
    在这里插入图片描述

1.3 Master之recevieAndReply()

receiveAndReply方法接收EndpointRef ask及其衍生方法发送的信息,定义如下

在这里插入图片描述
这里面的很多消息,在前面都遇到过,各种注册,请求等等,不再赘述。如果不了解,可以回头去看看系列文章中的Master注册机制分析SparkSubmit任务提交等文章

1.4 Master之onStop()

主要是关闭webUI等各种服务:
在这里插入图片描述

2. Object Master解析

Object Master主要包含了Main()方法和startRpcEnvAndEndpoint()用来进行Master的启动

2.1 Object Master之main()

在这里插入图片描述

  1. 接收参数,包括rpc的host、port(底层netty使用)和webUI server的port,默认如下
    在这里插入图片描述
  2. startRpcEnvAndEndpoint方法,初始化RpcEnv,注册Master(RpcEndpoint)到RpcEnv,到这里,上面介绍的生命周期onStart -> receive(receiveAndReply)* -> onStop方法开始工作

2.2 Object Master之startRpcEnvAndEndpoint()

在这里插入图片描述

启动流程如下,具体请参考Spark RPC之Netty启动
在这里插入图片描述

总结

结合上一篇文章Spark RPC概述讲解了Master的实现及启动过程,Master是RpcEndpoint的具体实现,。其中主要关注了三点

  1. Master定时检测Worker连接情况(CheckForWorkerTimeOut)
  2. Worker信息注册(RegisterWorker)
  3. 心跳(Heartbeat)
    接下来我们看下Worker的实现以及如何向Master注册和发送心跳。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值