Giraph源碼分析(二)—啓動Master/Worker服務

做者 | 白松apache

注:本文爲原創,引用轉載需與數瀾聯繫。服務器

一、org.apache.giraph.bsp.CentralizedService 接口

功能:Basic service interface shared by both CentralizedServiceMaster and CentralizedServiceWorker.this

二、org.apache.giraph.bsp.CentralizedServiceMaster接口

功能:At most, there will be one active master at a time, but many threads can be trying to be the active master.線程

三、org.apache.giraph.bsp.CentralizedServiceWorker接口

功能:All workers should have access to this centralized service to execute the following methods.3d

四、org.apache.giraph.bsp.BspService抽象類

**功能:**Zookeeper-based implementation of CentralizedService.對象

五、org.apache.giraph.master.BspServiceMaster類

功能:ZooKeeper-based implementation of CentralizedServiceMaster.blog

六、org.apache.giraph.worker.BspServiceWorker類

功能:ZooKeeper-based implementation of CentralizedServiceWorker.繼承

BspServiceWorker類有WorkerClient和WorkerServer實例,分別做爲IPC通訊的客戶端和服務器端,經過Netty來發送數據。WorkerClient實例實際爲NettyWorkerClient對象,WorkerServert實例實際爲NettyWorkerServer對象。接口

NettyWorkerClient implements WorkerClient接口,NettyWorkerServer implements WorkerServer接口。同步

NettyWorkerServer類的構造方法中建立一個NettyServer對象,用於底層的IPC的通訊,還有一個ServerData對象,做爲數據實體。ServerData中包含該Worker的partitionStore、edgeStore、incomingMessageStore、currentMessageStore、彙集值等。

NettyWorkerClient類的構造方法中建立一個NettyClient對象,用於底層的IPC的通訊,做爲客戶端。

七、org.apache.giraph.worker.InputSplitsCallable 抽象類,繼承 Callable接口。

功能:用於加載頂點或邊 輸入splits,每一個線程都有一個WorkerClientRequestProcessor實例(實爲 NettyWorkerClientRequestProcessor對象),負責向遠端的worker發送數據。

NettyWorkerClientRequestProcessor對象用於發送的WorkerClient對象就是BspServiceWorker裏面的WorkerClient對象。

VertexInputSplitsCallable類中的readInputSplit()方法用來從split中讀取頂點的信息,而後調用NettyWorkerClientRequestProcessor對象的sendVertexRequest()方法把頂點發送到它所屬的Partition上。

八、org.apache.giraph.graph.ComputeCallable 類,繼承Callable接口。

在該對象中完成「計算-通訊-同步」的過程。每一個線程都有一個WorkerClientRequestProcessor實例(實爲 NettyWorkerClientRequestProcessor對象),負責向遠端的worker發送數據。

相關文章
相關標籤/搜索