- **洗衣流程**:
- **分揀衣物**:將不同顏色、材質的衣物分類(類似 **資料分片**)。
- **多台洗衣機同時運作**:分開洗滌不同類別的衣物(**平行處理**)。
- **目標**:去除污漬(**初步處理原始資料**)。
- **Map 階段對應**:
- 將大數據集拆分成多個「分片」(如分揀衣物)。
- 多台伺服器同時處理不同分片,提取關鍵資訊(如清洗並標記衣物類型)。
- 輸出中間鍵值對(例如
{ "襯衫": 1, "牛仔褲": 1 }
)。---
### **2. Shuffle(分類整理):隱藏的過渡步驟**
- **晾衫前的準備**:
- 將洗好的衣物按類型(上衣、褲子)或顏色分類,方便後續處理。
- **Shuffle 階段對應**:
- 系統自動將相同鍵(如「襯衫」)的中間結果集中到同一節點,為 Reduce 做準備。
- 類似將所有「襯衫」集中到一個衣籃,方便統一晾曬。
---
### **3. Reduce(晾衫階段):整合與輸出結果**
- **晾衫流程**:
- **統一方式處理同類衣物**:例如用衣架晾襯衫、用夾子夾襪子(**按類別歸納**)。
- **節省空間與時間**:整齊排列提高效率(**匯總結果**)。
- **Reduce 階段對應**:
- 接收已分組的中間資料(如所有「襯衫」的數量)。
- 對同類資料進行聚合計算(如統計總件數)。
- 輸出最終結果(如
{ "總衣物數": 15 }
)。---
### **為何這個類比有效?**
- **分工協作**:如同家人分工洗衣晾衫,MapReduce 透過多台機器分工處理。
- **階段性處理**:洗滌(Map)與晾曬(Reduce)需按順序執行,避免混亂。
- **效率提升**:平行處理大量任務(同時洗多批衣物)節省總時間。
---
### **進階思考:容錯機制**
若類比中加入「意外處理」,例如:
- **洗衣機故障**:重新分配衣物到其他機器(MapReduce 的 **容錯重試**)。
- **晾衣時大風吹落**:重新晾曬(Reduce 階段的 **資料複製備份**)。