MapReduce的運作原理

Download Report

Transcript MapReduce的運作原理

認識MapReduce
Outline
 什麼是MapReduce
 MapReduce的運作原理
 MapReduce的特性
2
什麼是MapReduce
MapReduce的運作原理
MapReduce的特性
3
什麼是MapReduce?
 MapReduce是由Google所提
出的一套平行程式架構
Cloud Applications
 主要是用來處理大量資料
 擁有可靠的容錯機制
 採用了類似Divide-and-
Conquer的觀念
 啟發自函數編程中常用的
 Map (映射)函數
MapReduce
Hbase
Hadoop Distributed File System
(HDFS)
A Cluster of Machines
 Reduce (化簡)函數
4
MapReduce一些專業術語
 Job
 任務
 Task
 小工作
 JobTracker
 任務分派者
 TaskTracker
 小工作的執行者
 Client
 發起任務的客戶端
 Master node
 控制節點
 Slave nodes
 工作節點
 Map
 對應
 Reduce
 總和
5
Nodes, Trackers, Tasks
 JobTracker
 運行在 Master node 上
 接受clients端發送的工作
 TaskTracker
 運行在 Slave nodes上
 獨立執行所分派的小工作
6
MapReduce 與<Key, Value>關係
Input
Data
Output
Key1
val
Key2
val
…
Map
Input
Select key
…
Key1
Output
val
val
val
…
Key
values
Reducer
7
MapReduce: High Level
8
什麼是MapReduce
MapReduce的運作原理
MapReduce的特性
9
MapReduce的基本原理運作圖
使用者的程式
(1)配置
(1)配置
(1)配置
Master機器
(2)分配Map
任務
GFS或
HDFS
檔案系統
資料0
資料1
Map
(4)本地寫入
(3)讀取
Map
資料2
中間值0
中間值1
Map
(6)寫入
GFS或
HDFS
檔案系統
Reduce
輸出結果0
中間值0
本地磁碟的
內部檔案
中間值1
資料3
資料4
(2)分配Reduce
任務
(5)遠端讀取
Reduce
輸出結果1
中間值0
中間值1
輸入檔案
Map階段
本地磁碟的
中介檔案
Reduce階段
輸出檔案
10
Wordcount範例
Input
Mapper
Cat 1
Dog 1
Cat Dog
Pig FIsh
Mapper
Mapper
Output
Merge
Cat 1
Cat 1
Pig 1
Pig 1
Cat [1 1]
Pig [1 1]
Reducer
Cat 2
Pig 2
Dog
FIsh 1
FIsh 1
Dog[1]
Fish [1 1]
Reducer
Dog 1
FIsh 2
Pig 1
FIsh 1
FIsh 1
Cat Pig
FIsh
Sort/Copy
Cat 1
Pig 1
11
Mapper流程
Hi Cloud say Hi
Input
Key
StringTokenizer itr = new StringTokenizer( line);
Hi
/user/hadoop/input/hi
…
…
Hi Cloud say Hi
…
…
itr
itr
Cloud
itr
say
itr
Hi
itr
while (itr.hasMoreTokens()) {
word.set(itr.nextToken());
context.write(word, one);
}
Input
Value
<word, one>
<Hi, 1>
<Cloud, 1>
<say, 1>
<Hi, 1>
12
Reducer流程
<word, one>
<Hi, 1 → 1>
<Cloud, 1>
<say, 1>
Hi
1
1
<key, result>
<Hi, 2>
<Cloud, 1>
<say, 1>
13
什麼是MapReduce
MapReduce的運作原理
MapReduce的特性
14
MapReduce的特性
 可以提供高度的可靠性運算
 可以提供容錯機制
 可以降低網路傳輸的頻寬需求
 可以提供負載平衡
15