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

詳解 (共 1 筆)

#6330656

MapReduce 是一種分散式運算框架,由 Google 提出,主要用於大規模數據處理。它包含兩個主要步驟:

  1. Map(映射階段)
    • 由 Mapper 負責處理輸入數據,輸出鍵值組(key-value pairs)
  2. 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 之前!

正確的流程應該是:

  1. Map 階段: 讀取原始數據並產生 (key, value) 組
  2. Shuffle 階段: 收集 Mapper 輸出的 key,對相同 key 的數據進行排序、分組,並傳送給對應的 Reducer
  3. Reduce 階段: 進行聚合、計算並輸出最終結果

因此,資料在 進入 Map 階段之前並不會經過 Shuffle,這使得 (D) 是錯誤的選項

正確答案:

(D) 資料在進入 Map 階段之前會經過整理階段(shuffle) (錯誤!Shuffle 只發生在 Map 與 Reduce 之間)

0
0