浅析SparkRPC源码(spark2.11)
Spark的RPC
一步一步走下去:
RpcAddress
RpcEndPointRef?
當我們需要向一個具體的RpcEndpoint發送消息時,一般我們需要獲取到該RpcEndpoint的引用,然后通過該應用發送消息。
?部分方法:
RpcEnv?
RpcEnv的部分方法:
RpcEndpoint
正如他所說我們前去看他的生命周期:
那么RpcEndpoint表示一個個需要通信的個體都有哪些?如master,worker,driver
Driver這里就不在做演示了,有興趣的可以自行進入源碼中查看。
在調用中,我們發現了一個RpcCallContext的特性,在receiveAndReply被作為參數。
所以關注了一下他:
整片博客中由許多方法,類并未列出,看時做一個參考即可。在自己的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。
總結
以上是生活随笔為你收集整理的浅析SparkRPC源码(spark2.11)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么时候该用MySQL,什么时候该用ES
- 下一篇: 怎么在idea中找实现类