Unit 11 · Systems research · Lesson 4 of 4
Systems paper route: MapReduce, Dynamo and Raft
Step 1: Learn the ideas
- Reading order and a three-pass method for systems papers
- MapReduce: programming model, master, re-execution, atomic commits, stragglers
- Dynamo: ring, preference lists, sloppy quorums, hinted handoff, vector clocks, Merkle trees
- Raft: election, log replication, safety rules, membership change, compaction
- Correctness arguments versus empirical results in each paper
- Mapping to 6.5840: Lab 1 MapReduce, Lab 2 key/value server, Lab 3 Raft, Lab 4 replicated key/value, Lab 5 sharding
- Paxos Made Simple as background for Raft
- Positioning: what later systems kept or changed
Why it matters
MapReduce, Dynamo and Raft are three different answers to building reliable services from unreliable machines: re-execute deterministic work, stay available and reconcile later, or agree on a single ordered log. Interviews for systems research and distributed-systems roles use them as shared vocabulary, and research interviews in particular test whether you can say exactly what each paper proves, what it measures and under which assumptions. MIT 6.5840 builds its labs around these ideas, which turns reading into implementation.
Core ideas
Suggested order. Read MapReduce first (short, with a clear failure model), then Raft (a precise correctness argument), then Dynamo (an engineering paper full of tradeoffs and production measurements). Paxos Made Simple, assigned in an early 6.5840 lecture, is optional background for Raft.
MapReduce (OSDI 2004).
- Correctness argument (Section 3.3): with deterministic map and reduce functions, the distributed run produces the same output as some fault-free sequential execution. It rests on re-executing failed tasks, ignoring duplicate completion reports and atomically committing outputs (renaming reduce outputs). With non-deterministic functions the guarantee weakens: each reduce output matches some sequential execution, but different reduce outputs may correspond to different executions.
- Assumptions: a single master whose failure aborts the job in the described implementation, a reliable distributed file system, and user code without external side effects.
- Empirical results (Sections 5–6): grep and sort on the authors' cluster, slower completion with backup tasks disabled, behaviour when many workers are killed, and production usage statistics. These reflect 2004 hardware and workloads.
- 6.5840: Lecture 1 and Lab 1, where your coordinator reassigns tasks that do not finish within a timeout and workers write temporary files that they rename atomically.
Raft (USENIX ATC 2014, extended version).
- Correctness argument: the properties in Figure 3 (Election Safety, Leader Append-Only, Log Matching, Leader Completeness, State Machine Safety) and the safety argument in Section 5.4.3, built on the election restriction and the rule that a leader commits entries by counting replicas only for its own term (Figure 8 shows why). Section 9.2 describes a TLA+ specification, a mechanically checked proof of one property that relies on invariants not themselves checked, and an informal proof of State Machine Safety.
- Assumptions: crash-recovery failures with persistent term, vote and log; no Byzantine behaviour; and broadcastTime ≪ electionTimeout ≪ MTBF, which matters for availability only.
- Empirical results: a user study comparing understandability of Raft and Paxos with a paired statistical test, and leader-election timing under different timeout randomization.
- 6.5840: the two Raft lectures and Lab 3 (3A leader election, 3B log, 3C persistence, 3D log compaction), then Lab 4 (fault-tolerant key/value service) and Lab 5 (sharding).
Dynamo (SOSP 2007).
- Design arguments rather than proofs: consistent hashing with virtual nodes; preference lists of N replicas; R and W settings where R + W > N gives overlapping quorums only when strict preference lists are used; sloppy quorums and hinted handoff to stay writable during failures; vector clocks to detect concurrent versions; Merkle-tree anti-entropy; gossip membership. The consistency promise is eventual consistency, with conflicting versions returned to the application for reconciliation.
- Empirical results (Section 6): production latency distributions (average and 99.9th percentile), buffered versus durable writes, load balance across partitioning strategies and how often reads saw divergent versions. They come from one company's workloads and hardware, and the paper states that detailed data on the consistency impact of failures is out of scope.
- 6.5840: Dynamo is not on the current schedule. Read it against the linearizability lecture and Lab 2, whose versioned conditional puts are a single-version alternative to vector clocks, to articulate what Dynamo trades away.
Reading method. For each paper keep two lists: claims with a stated model and an argument (check the argument), and claims backed by measurements (check workload, baseline, environment and variance). Then write one lab experiment that would probe an empirical claim.
Common misconceptions
- "MapReduce executes each user function exactly once." Tasks may run several times; the guarantee concerns committed output and needs deterministic functions plus atomic commits.
- "Dynamo is strongly consistent when R + W > N." Sloppy quorums let writes land outside the preference list, so read and write sets need not intersect; even strict quorums do not give linearizability by themselves.
- "Raft is safe because a majority stored the entry." For entries from earlier terms that is not enough; the commit rule and election restriction together provide safety.
- "The numbers show how these systems perform today." They describe specific clusters and workloads years ago; study the method, not the values.
- "The Raft paper fully mechanically verifies Raft." Its mechanized proof covers one property and relies on unchecked invariants; the rest is an informal proof.
How to approach it
Pair each paper with its lab: MapReduce with Lab 1, Raft with Labs 3–4. Fill the paper guides' structured notes, and after each lab revisit which claims your tests actually exercised. In interviews, be ready to explain a guarantee with its model in one minute and a measured result with its caveats in another.
Suggested order
- 1Read the MapReduce paper with its guide (Sections 2–4 closely, Sections 5–6 for evaluation) alongside the 6.5840 Lecture 1 notes.
- 2Do 6.5840 Lab 1 (MapReduce); afterwards, write which paper mechanism each part of your coordinator implements.
- 3Optionally read Paxos Made Simple, then the Raft extended paper through Section 5 with the 6.5840 Raft lecture notes and FAQ; replay elections in the RaftScope visualization on the Raft website.
- 4Do Lab 3A–3B, then read Raft Sections 6–9 and finish Lab 3C–3D; use the Students’ Guide to Raft (listed with the replication topic) when stuck, and reproduce the Figure 8 scenario as a test.
- 5Read Dynamo with its guide, then the 6.5840 linearizability lecture notes, and write a one-page comparison of Dynamo’s guarantees with Raft’s.
- 6Fill the structured notes for all three papers, separating guarantees from measurements, then do the MapReduce stragglers experiment.
Paper guides: In Search of an Understandable Consensus Algorithm (Extended Version), Dynamo: Amazon's Highly Available Key-value Store, MapReduce: Simplified Data Processing on Large Clusters
Step 2: Check off what you can do
Tap each one you can genuinely do or explain. Each earns 10 XP.
Step 3: Go deeper
MIT 6.5840 Distributed SystemsStart here
MIT PDOSSection: Schedule with paper readings and lecture notes
Lecture notes, FAQs and lab links that accompany the MapReduce and Raft readings.
Open(opens in a new tab)Link responded, 5 Oct 2026In Search of an Understandable Consensus Algorithm (Extended Version)Start here
raft.github.ioRead Sections 5 and 8 closely, with Figure 2 at hand while implementing.
Open(opens in a new tab)Link responded, 5 Oct 2026MapReduce: Simplified Data Processing on Large Clusters
Google ResearchProgramming model, failure semantics and evaluation of the first paper on the route.
Open(opens in a new tab)Link responded, 5 Oct 2026Dynamo: Amazon's Highly Available Key-value Store
All Things Distributed (Werner Vogels)Availability-first design and production measurements; read Sections 2, 4 and 6.
Open(opens in a new tab)Link responded, 5 Oct 2026Paxos Made Simple
Leslie Lamport (lamport.azurewebsites.net)Optional background for Raft’s safety argument and the vocabulary of consensus.
Open(opens in a new tab)Link responded, 5 Oct 2026
Step 4: Practice
Implement before you re-read: do Lab 1 after the first MapReduce pass and the Raft labs after Section 5, then return to the papers with your bugs in mind. For each paper, write one paragraph on the guarantee and its model and one on a measured result and its caveats, and explain both aloud in under two minutes each.
- MIT 6.5840 Lab 1: MapReduceOpen(opens in a new tab)Not attemptedMIT 6.5840
- MIT 6.5840 labs: key/value server, Raft, fault-tolerant and sharded key/valueOpen(opens in a new tab)Not attemptedMIT 6.5840
- Stragglers and backup tasks in your MapReduce lab implementationOpen(opens in a new tab)Not attemptedSelf-directed extension of MIT 6.5840 Lab 1
Record attempts on each problem’s page (+15 XP, +10 more when solved on your own).
Step 5: Test yourself
Answer each one out loud or on paper before you finish the lesson.
- Question 1What does MapReduce guarantee when the reduce function is non-deterministic?
- Question 2Why are completed map tasks re-executed after a worker failure, while completed reduce tasks are not?
- Question 3What are hinted handoff and anti-entropy each for, and how do they differ?
- Question 4How do vector clocks detect concurrent updates, and who resolves them in Dynamo?
- Question 5Which Raft properties constrain leaders and which constrain logs?
- Question 6What does the Raft user study measure, and what could threaten its validity?
- Question 7Which of Dynamo’s results would you expect to change on different hardware or workloads?
You’re done when you can
- Explain each paper’s main guarantee with its fault model in under one minute per paper.
- Pass the 6.5840 Lab 1 and Lab 3A–3B tests, run with the race detector as the course recommends.
- Classify at least five claims per paper as correctness argument or empirical result, with the section where the evidence lives.
- Explain with the Figure 8 scenario why Raft does not commit earlier-term entries by counting replicas.
- Explain what Dynamo’s sloppy quorums give up compared with strict quorums.


