CS 4513 - Distributed Systems Project to create a MapReduce Library in Go, focusing on RPC and fault tolerance through four phases.
-
Sequential MapReduce Library:
- Implement
doMap()anddoReduce(). - Validate with Go test suite.
- Implement
-
Word Count Application:
- Develop
mapF()andreduceF()functions for word count. - Verify with tests.
- Develop
-
Distributed MapReduce Library:
- Modify
schedule()for task distribution. - Test functionality.
- Modify
-
Handling Worker Failures:
- Enhance
schedule.gofor fault tolerance. - Confirm resilience with tests.
- Enhance
-
Architecture:
- Master: Manages tasks and workers.
- Workers: Execute tasks and communicate via RPC.
-
Workflow:
- Initialization: Master setup and worker registration.
- Task Distribution: Assign and monitor tasks.
- Map Phase: Process files and store results.
- Reduce Phase: Aggregate data.
- Completion: Merge results, shut down.
-
Fault Tolerance:
- Detect and reassign tasks from failed workers.
- Ensure idempotent execution.
Experience distributed systems by building a scalable and fault-tolerant MapReduce library.