iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 27
0
自我挑戰組

資料蒐集與分散式運算 30 天系列 第 27

[Day 27] MapReduce

歡迎來到第27 天,祝各位雙十愉快!

分散式運算

在學習分散式運算前,無法體會為什麼需要這樣的架構存在直到有一天意識到,當資料量級大到無法將所有資料放在同一個電腦裡的時候,運算將會變成非常的困難與緩慢,因此需要分散式運算。傳統的運算概念是從節點中將資料讀出,並將資料送進 CPU 進行運算,但分散式運算必較像是將運算邏輯送入各個節點進行運算,在將結果送入中心進行最終運算。

MapReduce

在 MapReduce 中,有兩個關鍵的階段 Map 和 Reduce。流程會是:

  • 資料預處理
  • Map 流程
  • Reduce 流程

流程

資料進行處理是將原始資料以 Key-Value 的形式儲存於每個節點,同一個 Key 的資料不一定會被儲存到同一個節點,通常會是分散的。

進入 Map 階段,可以理解為在節點上的第一層運算。這個節點的產出會一樣以 Key-Value 呈現,但在這個階段只有一個 uni-key。

接下來進入將所有分散在節點的結果匯入 Reduce 節點,在這個時刻,資料型態又會像回到 Map 階段的狀態,並在這個階段再進行一次運算,吐出最終的結果。

這個流程可以多次擴展並提升運算效能。

以上就是今天的學習筆記。我們明天見!


上一篇
[Day 26] Hadoop 生態系
下一篇
[Day 28] HDFS
系列文
資料蒐集與分散式運算 30 天30

尚未有邦友留言

立即登入留言