This is my answer to the provided task by my University (TU-Berlin).
The provided task was to create a program, which can perform the MapReduce-Algorithm. There had to be a multithreaded worker and a multithreaded distributor. The distributor has to queue tasks and handle the communication with the workers (both using ZMQ).
I also implemented a generic linked list, as well as a generic hashmap (utilising the linked list).
You can read more on this here.
You can run this project by calling the bash scripts I wrote:
To run the tests provided by the coursework (the testbench is written in python and thus the provided requirements need to be installed):
./make_tests.sh
Building and passing your own file and ports (the amount of ports can vary and be whatever you want, as long as it isn't reserved, but it has to be the same on both program calls) as an input (you need two terminals open for this):
./make_build.sh
Terminal 1:
./build/worker 5555 5556 5557 5558
Terminal 2:
./build/distributor test.txt 5555 5556 5557 5558
This is a copy of the original repository (which is on Gitlab).