MapReduce
MapReduce ist ein Programmiermodell zur verteilten, parallelen Verarbeitung großer Datensätze. Es trennt die Verarbeitung in Map- und Reduce-Phasen und vereinfacht Skalierung, Fehlerbehandlung und Datenpartitionierung in Cluster-Umgebungen.
Klassifikation
- KomplexitätHoch
- AuswirkungTechnisch
- EntscheidungstypArchitektur
- OrganisationsreifeFortgeschritten
Technischer Kontext
Prinzipien & Ziele
Use Cases & Szenarien
Kompromisse
- Straggler-Tasks verlängern Gesamtlaufzeit
- Netzwerk- und Shuffle-Engpässe bei großem Datenvolumen
- Fehlende Anpassung kann zu hohen Betriebskosten führen
- Datenlokalität steigern durch passende Partitionierung
- Kleine Shuffle-Datenmengen durch frühe Aggregation reduzieren
- Skew durch salting oder angepasste Partitioner behandeln
I/O & Ressourcen
- Große, strukturierte oder semi-strukturierte Datensätze
- Verteiltes Speichersystem und Netzwerkverbindung
- Cluster-Ressourcen (Rechen- und Speicherknoten)
- Aggregierte oder transformierte Datensätze
- Index- oder Suchdatenstrukturen
- Laufstatistiken und Audit-Logs
Beschreibung
MapReduce ist ein verteiltes Programmiermodell zur parallelen Verarbeitung großer Datenmengen auf Clustern; es kapselt die Schritte Map und Reduce und skaliert horizontal. Es vereinfacht Fehlertoleranz und Datenpartitionierung, weshalb typische Anwendungsfälle Batch-Analytics, Index-Building und aggregierte Transformationen sind. Implementierungen optimieren Datenlokalität, Scheduling und Ressourcennutzung und ermöglichen deterministische Aggregate bei großen Datenmengen.
✔Vorteile
- Horizontale Skalierung großer Datenverarbeitungsaufgaben
- Eingebaute Fehlertoleranz durch Task-Neustarts
- Einfaches Programmiermodell für komplexe Aggregationen
✖Limitationen
- Hohe Latenz — hauptsächlich für Batch-Verarbeitung geeignet
- Nicht optimal für iterative, niedrige Latenz-Workloads
- Leistungsprobleme bei Datenungleichgewicht (skew)
Trade-offs
Metriken
- Durchsatz (MB/s verarbeiteter Daten)
Misst die Datenmenge, die pro Sekunde verarbeitet wird und gibt Auskunft über Skaleneffekte.
- Job-Laufzeit (Wall-Clock)
Gesamtdauer eines MapReduce-Jobs von Start bis Abschluss.
- Straggler-Anteil
Anteil der Tasks, die deutlich länger laufen als der Median und die Gesamtlaufzeit beeinflussen.
Beispiele & Implementierungen
Originalarbeit von Google (Paper)
Die ursprüngliche Publikation beschreibt das MapReduce-Design und praktische Implementierungsdetails aus Googles Umfeld.
Apache Hadoop MapReduce
Offizielle Hadoop-Implementierung des MapReduce-Paradigmas, weit verbreitet in Big-Data-Ökosystemen.
Batch-Analytics bei großen Webunternehmen
Typische Praxisbeispiele zeigen MapReduce für Log-Analyse, Index-Erstellung und periodische Aggregationen in Produktionsumgebungen.
Implementierungsschritte
Datenquellen identifizieren und in partitionierbare Form bringen
Map- und Reduce-Funktionen definieren und lokal testen
Jobs auf einem Testcluster ausführen und Partitionierung anpassen
Produktionseinführung mit Monitoring und Ressourcen-Tuning
⚠️ Technische Schulden & Engpässe
Tech Debt
- Monolithische Job-Pipelines ohne Modularisierung
- Hartkodierte Partitionslogiken, die Migration erschweren
- Unzureichende Testabdeckung für Fehlerfälle und Retry-Logik
Bekannte Engpässe
Beispiele für Missbrauch
- Einsatz für Low-Latency-Streaming-Analysen statt spezialisierter Stream-Engines
- Ungetuntes Ausführen großer Jobs ohne Monitoring führt zu Ressourcenkonflikten
- Verwendung bei stark iterativen Algorithmen statt spezialisierter Frameworks
Typische Fallen
- Unterschätzung der Shuffle-Kosten im Netzwerk
- Ignorieren von Daten-Skew bei Partitionierung
- Fehlende Beobachtbarkeit bei Langläufern und Stragglers
Erforderliche Fähigkeiten
Drivers (Architectural Drivers)
Constraints
- • Eingabedaten müssen partitionierbar sein
- • Deterministische Reduce-Operationen erforderlich
- • Abhängigkeit von verteiltem Speichersystem (z. B. HDFS, S3)