注意:建议各位看如下代码,一定要导入一份源码到自己本地电脑中哦,可以导入进行调试。流程代码我删除许多,保留重点。
本章主要介绍的是,worker 开启,并与master通信流程,以及inbox收件箱outbox发件箱的创建。认真学习你可以收获许多哦,举例使用该inbox,outbox处理模式,可以嵌入到聊天程序当中哦,处理高并发请求。
废话不多说,进入主题。
spark业务操作和数据传输相隔里,数据传输就交给netty,netty不涉及业务,提高netty服务器的响应时间,提高代码的复用性,降低耦合性。work类中有许多业务处理逻辑,scale编写,数据消息传输netty Java编写。
worker 服务开启通信,需要一个开启远程通信环境RpcEnv。创建inbox收件箱outbox发件箱对消息进行收取转发。
具体worker创建,与master通信过程如下:

worker开启流程图
**开启worker步骤:**按顺序读
①Worker类: val rpcEnv = RpcEnv.create(systemName, host, port, conf, securityMgr)//开启worker服务入口类
②RpcEnv类:
def create(。。。){
new NettyRpcEnvFactory().create(config)
}
③NettyRpcEnvFactory 类:
def create(config: RpcEnvConfig): RpcEnv = {
val nettyEnv = new NettyRpcEnv(。。。。)
nettyEnv.startServer(config.bindAddress, actualPort)
}
④NettyRpcEnv类:
{
private val dispatcher: Dispatcher = new Dispatcher(this, numUsableCores)
private val transportContext = new TransportContext(transportConf,new NettyRpcHandler(dispatcher, this
Spark Worker与Master通信及Netty实现解析

本文深入剖析了Spark Worker的启动过程,包括如何通过Netty进行RPC通信,创建inbox/outbox处理消息。讲解了从Worker开启到与Master建立连接的详细步骤,涉及 RpcEnv、NettyRpcEnv、Dispatcher、MessageLoop等组件,以及如何利用inbox/outbox处理高并发请求。此外,还展示了如何向Master发送注册消息并建立连接。
最低0.47元/天 解锁文章
4253





