This is a course project from UIUC cs425 distributed system and is divided into 4 stages:
- Setting up a distributed log system where we can check and grep logs on multiple machines (mp-1, detail explained in cs425_mp1.pdf)
- Building a p2p membership system with a dynamic membership list. The system support high-reliability fault tolerance (mp-2, detail explained in cs425_mp2.pdf)
- Building a distributed file system (DFS) with replica control. The DFS is tolerant to at most 3 simultaneous fails and any numbers of total fail. (mp-3, detail explained in cs425_mp3.pdf)
- Building a stream processing system like Apache Storm, which can read the file from the DFS, process data in a different node with different jobs, and write the temporary result into DFS. The system could guarantee the correctness using Acker method like Apache Storm and is generally faster than Apache Spark with a relatively small dataset. (detail explained in cs425_mp4.pdf)
make clean
: remove all the binary and log filesmake build
: build the binarysmake start
: starting the server as a daemonmake stop
: stop the server
- cd to the mp-3 repository
make clean
make start
./p2pClient
Then you can use the client to send request to the local server:
- start application-name local-data-name: start an application
- start application-name local-data-name period sendPeriod: start an application and specify args
- put localfilename sdfsfilename: put local file to SDFS
- get sdfsfilename localfilename: fetch sdfsfile from SDFS
- get-versions sdfsfilename num-versions localfilename: fetch num-versions sdfsfile from SDFS
- delete sdfsfilename: delete sdfsfilename in SDFS
- ls sdfsfilename: list all VM addreses where this file is currently being stored
- store: list all files currently being stored at this machine
- join: join the network (introducer must be in the network!)
- leave: voluntarily leave the network.
- memberlist: show membership list
- peerlist: show peer list
- showID: show the ID of the vm
- grep: grep the log
Then you can check the log file in output.log