
|
27
第三章:
MapReduce
第三章
MapReduce
MapReduce
泛指兩個截然不同的東西:程式設計模型(
programming model
,於本章說
明)以及特定的框架實作(將於第
36
頁的「
Hadoop MapReduce
簡介」說明)。
MapReduce
最重要的是一種撰寫應用程式的方式,旨在簡化大型、分散式、能容錯的資料處理應
用程式開發。在
MapReduce
中,開發者撰寫
任務
(
jobs
),主要由一個
map
函數
(
map
function
)與一個
reduce
函數
(
reduce function
)組成。而程式框架處理那些將工作平
行化的繁瑣細節,如將任務的部份內容排程到負責執行的機器(
worker machine
),監
控並處理故障的復原,諸如此類。開發者不再需要實作複雜而重複的程式碼,相反地,
只需要專注在演算法與商業邏輯。用戶提交的程式碼將被框架所執行,而非其他方式。
就像
Java
應用伺服器(
application server
)在接收到
HTTP
要求(
request
)時,會去
執行
servlet
;容器(
container
)負責設定、拆解,並提供一個執行環境(
runtime
environment
)給用戶提交的程式碼。就像
servlet
作者並不需要實作低階的
socket I/O
、
處理事件及複雜執行緒的協調,
MapReduce
的開發者寫程式時只需遵循妥善定義的簡
單介面,剩下的繁瑣工作就交給「容器」來處理。
2004
年,
MapReduce
的概念由兩名谷歌工程師(
J. Dean ...