Course 02 · Skill area 04 · 6 tracks · 24 modules · Being written · 4 of 24 published

Distributed data processing

Partitions, shuffles, clocks, state, delivery guarantees, and the incidents they cause. Each lesson starts from a failure a real pipeline produces, shows the mechanism behind it, and ends with a fix and its cost.

Three engines, one set of mechanisms. Learn the mechanism once in plain Python, and Spark, Kafka and Flink each become a version of something you already understand.

Runs on your laptop. Python only until S04 or K02: no Spark, Kafka, Flink, cloud account or containers to begin.

+9.6%

The revenue dashboard reported 9.6% more revenue than expected. The source data was correct, but one publish task had written its results twice.

Every lesson opens like this: the failure first, then the mechanism, then the fix.
Read F04.2 · When a task writes the same data twice · 43 min →
Start hereF01.1 · What determines a job’s runtime?13 minStart →

Already know this?Take the F01 diagnostic · 40 min →Early access

Save your progress so you don’t lose it.Save my progress →

The route

Kafka · no Spark neededStreamingSpark BatchFlink line · advancedIntegrationFoundations trunk12 lessons liveF01Parallelism& cost modelF02Partitions &ownershipF03Movement &aggregationF04Failures &recoveryG-FK01Partitions &offsetsK02Writes &durabilityK03ConsumergroupsK04Commits &replayG-KST01Unboundeddata & timeST02State &watermarksST03Progress &recoveryG-STS01Architecture& executionS02DataFrames &optimisationS03Exchanges &joinsS04Skew &sizingS05Memory &spillS06Faulttolerance &commitG-SFL01Dataflow &runtimeFL02Keyed state& timersFL03Checkpoints& recoveryFL04Backpressure& rescalingG-FLI01Choosing anarchitectureI02Source-to-sinkcontractsG-II03ProductionarchitectureG-P
  1. Foundations trunk · 12 lessons live
  2. Kafka · no Spark needed
  3. Streaming
  4. Spark Batch
  5. Flink line · advanced
  6. Integration

Point at or tap a station to see its module.

Take the trunk, then the line for your engine. A passed module, its 40-minute diagnostic or a passed gate opens the next station.

How a module works

  1. LessonsPredict, then read the mechanism. Three per module, 13–43 min each.Not graded
  2. WorkbenchBuild a small simulator in Python, checked against a result oracle.Not graded
  3. TicketsDiagnose and repair failures you haven’t seen; your regression test must fail on the original.Graded
  4. Decision recordAt least two options, priced with your own numbers, every guarantee with its scope named.Graded · published rubric

A module is passed on evidence, not attendance.

Already know a module? Its diagnostic – 7 predictions and one unseen ticket, 40 minutes – opens the next one without taking it.

Track F · Foundations · 4 modulesLessons liveHands-on in early access

Distributed computing foundations

Build engine-independent mental models using small deterministic Python experiments before introducing Spark.

5 h 32 min of reading

  1. Parallelism and the economics of distribution

    You can Predict when additional workers help or hurt and justify using a cost model

    1. F01.1What determines a job’s runtime?Sixteen processes, one disk: why the hourly job stopped speeding up at 63 seconds13 min
    2. F01.2Why adding more workers can make a job slowerIncreasing workers from 16 to 64 made the nightly job 86 seconds slower.20 min
    3. F01.3Balancing job performance and costWhy eight workers met the latency requirement while sixty-four cost nine times more and still finished late.18 min

    Hands-on Early access

    Workbench L-F01 worker-cost-sim · 5 tickets (one observe-only) · decision record “The fulfilment feed” Check your early access →

    Already know F01?Module diagnostic · 7 predictions and one unseen ticket · 40 min · opens F02 →Early access

Gate G-FEarly access

Prove Track F in one gate

16 predictions (30 min), three tickets from the gate pack (about 40 min each) and one decision record (about 60 min), within seven days. Pass it and the Spark, Kafka and Streaming lines open without taking the four modules.

See what G-F asks →

Coming next · 20 modules · Planned

TrackModulesStarts afterRuns onStatusWhile you wait
S Apache Spark: distributed batch6F04PySpark local mode, then a containerised cluster from S04PlannedSpark tool track → Early access · Open 5 Spark scenarios
  • S01 Spark architecture and execution
  • S02 DataFrames and query optimisation
  • S03 Exchanges, joins and aggregations
  • S04 Skew, partition sizing and distribution
  • S05 Memory, spill and cluster resources
  • S06 Spark fault tolerance, output commit and runtime debugging
K Apache Kafka: distributed event logs4F02 · no Spark neededA Python-simulated log, then a three-broker cluster from K02Planned5 Kafka scenarios
  • K01 Partitions, offsets and ordering
  • K02 Producer writes, replication and durability
  • K03 Consumer groups and rebalancing
  • K04 Offset commits, replay and delivery guarantees
ST Streaming fundamentals and Structured Streaming3F03Local sources firstPlanned–
  • ST01 Unbounded processing and time
  • ST02 Stateful computation, windows and watermarks
  • ST03 Structured Streaming: progress and recovery
FL Apache Flink: stateful stream processing · advanced4F04 and ST01Reproducible local containersPlanned5 Flink scenarios
  • FL01 Flink dataflow and runtime architecture
  • FL02 Keyed state, timers and stateful operators
  • FL03 Checkpoints, savepoints and recovery
  • FL04 Backpressure, rescaling and operations
I Integration and architecture · 2 core + 1 advanced3K04 and a Spark or Flink lineOnly the components each lab needsPlanned–
  • I01 Selecting a distributed processing architecture
  • I02 Source-to-sink correctness and recovery contracts
  • I03 Production architecture and failure-driven design (advanced)

Before you start

You need
Python functions, lists and dictionaries, and a test; SQL joins and grouping (the SQL course’s first three stages); reading a file from the command line.
You don’t need
Spark, Kafka, Flink, a cloud account, Kubernetes or containers to begin.

Where to start

Junior
Uses a framework's defaults; unaware of shuffles, partitioning, or batch/stream trade-offs. Start at F01.1 →
Mid
Understands partitioning and shuffles; writes batch and basic streaming jobs but tunes reactively. Take the four module diagnostics and start at the first one you miss, then your engine’s line →
Senior
Reasons about distribution, state, and exactly-once vs at-least-once; designs for skew, late data, and recovery. Take G-F, then the Integration line →

A level describes your work on this area, never you. No report yet? Take the F01 diagnostic →

Start with the failure you’ll meet first.

Start F01.1 · 13 min →15 scenarios to practise this area

Curriculum plan v2.0 · 13 Oct 2026 · 24 modules · 6 tracks · 7 gates · Read the full plan →

Live public · Early access invited members · Planned not written yet