浅析SparkRPC源码(spark2.11)

南楼画角 提交于 2020-03-16 21:25:16

某厂面试归来,发现自己落伍了!>>>

Spark的RPC

img点击并拖拽以移动

一步一步走下去:

RpcAddress

img点击并拖拽以移动

RpcEndPointRef

当我们需要向一个具体的RpcEndpoint发送消息时,一般我们需要获取到该RpcEndpoint的引用,然后通过该应用发送消息。

img点击并拖拽以移动

部分方法:

img点击并拖拽以移动

RpcEnv

img点击并拖拽以移动

RpcEnv的部分方法:

img点击并拖拽以移动

RpcEndpoint

img点击并拖拽以移动

正如他所说我们前去看他的生命周期:

img点击并拖拽以移动

那么RpcEndpoint表示一个个需要通信的个体都有哪些?如master,worker,driver

img点击并拖拽以移动

img点击并拖拽以移动

Driver这里就不在做演示了,有兴趣的可以自行进入源码中查看。

在调用中,我们发现了一个RpcCallContext的特性,在receiveAndReply被作为参数。

所以关注了一下他:

img点击并拖拽以移动


整片博客中由许多方法,类并未列出,看时做一个参考即可。在自己的idea中查看源码。仅做一个引导。

瞎琢磨一阵,做个小总结:

打个比喻:若是将Spark类比为一个人的话,Spark RPC无疑就是它的血液部分。所以说Spark RPC可以说是Spark分布式集群的基础。

在整个RPC中:

RpcEnv为RpcEndpoint提供处理消息的环境。RpcEnv负责RpcEndpoint整个生命周期的管理,包括:注册endpoint,endpoint之间消息的路由,以及停止endpoint。

RpcEndpoint表示一个个需要通信的个体(如master,worker,driver),主要根据接收的消息来进行对应的处理。一个RpcEndpoint经历的过程依次是:构建->onStart→receive→onStop。其中onStart在接收任务消息前调用,receive和receiveAndReply分别用来接收另一个RpcEndpoint(也可以是本身)send和ask过来的消息。

RpcEndpointRef是对远程RpcEndpoint的一个引用。当我们需要向一个具体的RpcEndpoint发送消息时,一般我们需要获取到该RpcEndpoint的引用,然后通过该应用发送消息。

RpcAddress表示远程的RpcEndpointRef的地址,Host + Port。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!