MapleJuice, as its name infers, is a MapReduce-like distributed computing framework. The framework includes two parts: a simple distributed file system and a MapleJuice engine built on top of Go socket and rpc. This project also contains implementations of a gossip-style membership protocol and a quorum-based leader election protocol that help maintain the topology of the service cluster.
-
Install Go
-
Clone and cd into project folder
-
Run the setup script on each node with
sh setup.sh <server-id>
(server id can be any number and is used only for easy identification when retrieving logs from remote servers) -
Make necessary changes to the generated config.txt file under home directory as indicated below.
-
Run the program with
go run main.go
. -
Follow the prompts to finish starting up services.
-
Enter a command or type
help
for a list of available commands
- By default the log server (used for retrieving logs from remote machines) will run on port 8000. To use a different port, update the
LOG_SERVER_PORT=<port>
entry in /UserHome/config.txt LEADER_ELECTION_QUORUM_SIZE
andREPLICATION_FACTOR
should be correctly configured according to cluster size and fault-tolerance guarantees.- Set
IS_INTRODUCER
=TRUE
for the introducer node and set the INTRODUCER_IP for other node correspondingly.