17. 關於 MapReduce 框架,下列敘述何者不正確?
(A) Mapper 的輸出需要是鍵值組(key-value pair)的結構
(B) 實現 Reducer,通常是定義如何處理個別鍵值下的值集合
(C) Reducer 的輸出值通常也是鍵值組(key-value pair)的結構
(D) 資料在進入 Map 階段之前會經過整理階段(shuffle)
答案:登入後查看
統計: A(1), B(7), C(5), D(28), E(0) #3156386
統計: A(1), B(7), C(5), D(28), E(0) #3156386
詳解 (共 1 筆)
#6330656
MapReduce 是一種分散式運算框架,由 Google 提出,主要用於大規模數據處理。它包含兩個主要步驟:
- Map(映射階段)
- 由 Mapper 負責處理輸入數據,輸出鍵值組(key-value pairs)。
- Reduce(歸約階段)
- 由 Reducer 負責聚合來自 Map 階段的鍵值組,進行計算後輸出結果。
此外,Shuffle(洗牌階段) 會在 Map 和 Reduce 之間 自動進行,將相同 Key 的數據集中,然後交給 Reducer 處理。
選項分析:
(A) Mapper 的輸出需要是鍵值組(key-value pair)的結構 ✅
→ 正確,Mapper 負責將輸入數據轉換為 key-value 格式,這是 MapReduce 的基礎。例如,處理文字計數時,輸入 "hello world" 可能會被轉換成 ("hello", 1) 和 ("world", 1)。
(B) 實現 Reducer,通常是定義如何處理個別鍵值下的值集合 ✅
→ 正確,Reducer 負責處理每個 Key 對應的所有 Value。例如,對 "hello" 的值 [1,1,1] 進行加總,最終輸出 ("hello", 3)。
(C) Reducer 的輸出值通常也是鍵值組(key-value pair)的結構 ✅
→ 正確,Reducer 的輸出也通常是 ("key", value) 的結構,例如 ("hello", 3),這樣可以進一步傳遞給其他 MapReduce 任務或存儲到 HDFS。
(D) 資料在進入 Map 階段之前會經過整理階段(shuffle) ❌ (錯誤)
→ 錯誤!Shuffle 發生在 Map 和 Reduce 之間,而不是 Map 之前!
正確的流程應該是:
- Map 階段: 讀取原始數據並產生 (key, value) 組
- Shuffle 階段: 收集 Mapper 輸出的 key,對相同 key 的數據進行排序、分組,並傳送給對應的 Reducer
- Reduce 階段: 進行聚合、計算並輸出最終結果
因此,資料在 進入 Map 階段之前並不會經過 Shuffle,這使得 (D) 是錯誤的選項。
正確答案:
(D) 資料在進入 Map 階段之前會經過整理階段(shuffle) (錯誤!Shuffle 只發生在 Map 與 Reduce 之間)
0
0