A distributed graph processor based on the Pregel API. Possible operations are:
- finding the shortest path between two vertices
- finding the PageRank of a given vertex
- in our implementation, the sum of the PageRanks across all vertices sum to |V|
all
to build theworker
,coord
,client
,database
, andcnf
worker
coord
client
database
cnf
test
to run the unit test for the workerclean
to remove the build files and clean the cached test results
- After building, the binary files will be found in the
./bin
folder - To configure the config files (
worker
,coord
,client
)./bin/cnf [sync|port|azure]
./bin/cnf sync
- will synchronize theclient
andworker
config files to point to the correctcoord
port numbers./bin/cnf port
- will randomly assign ports (based on rand.Int()) to all the configuration files, and call./bin/cnf sync
(automatically syncs worker and coord to the correct coord ports)./bin/cnf azure [coordServer] [clientServer]
- based on the list of Azure VM addresses, will assign the correct server addresses to all the configuration files../bin/cnf azure [coordServer] [clientServer]
[coordServer]
- specify the name of the remote server for the coord to run on[clientServer]
- specify the name of the remote server for the client to run on
- (tl;dr) To run on Azure servers
git checkout -b <branch_name>
make cnf
./bin/cnf port
./bin/cnf azure [coordServer] [clientServer]
git add . && git commit -m "azure" && git push origin <branch_name>
- Take note of the assigned nodes (worker/coord/client) servers
[client_config.json assigned to server Gambier : 20.230.193.58 coord_config.json assigned to server Lulu : 20.83.241.160 worker0_config.json assigned to server Ivan : 52.175.222.198 worker1_config.json assigned to server Go : 20.98.67.22 worker2_config.json assigned to server Remote : 20.230.176.102 worker3_config.json assigned to server Anvil : 20.69.158.88 ]
- ssh into the Azure VMs
- Pull your branch
git fetch -v - a && git switch <branch_name>
make clean all
- Run
./bin/[worker|coord|client]
- based on the VM you are on and the output seen above
- (ie.
client_config.json assigned to server Gambier
therefore, run./bin/coord
on Gambier VM)
- Run the following in order to issue a query:
./bin/coord
runs a coordinator./bin/worker [workerId]
runs a worker node./bin/client
runs a client instance that can be used to queue up requestsclient shortestpath {vertex1} {vertex2}
runs a shortest path calculation from vertex1 to vertex2client pagerank {vertex}
finds the PageRank of the vertex