14.4K
3293
映射-化簡編程模型
美國谷歌(Google)公司在2004年提出的映射-化簡(MapReduce)編程模型,是最具代表性的批處理模式。其主要思想是從函數(shù)式編程語言里借鑒的,還有從矢量編程語言里借鑒的特性。它極大地方便了編程人員在不懂分布式并行編程的情況下,將自己的程序運行在分布式系統(tǒng)上。軟件實現(xiàn)是指定一個Map函數(shù),把一組鍵值對映射成一組新的鍵值對,指定并發(fā)的Reduce函數(shù),用來保證所有映射的鍵值對中的每一個共享相同的鍵組。
一個完整的MapReduce過程是:MapReduce模型首先將用戶的原始數(shù)據(jù)源進行分塊,然后分別交給不同的Map任務區(qū)處理。Map任務從輸入中解析出鍵值對集合,然后對這些集合執(zhí)行用戶自行定義的Map函數(shù)得到中間結(jié)果,并將該結(jié)果寫入本地硬盤。Reduce任務從硬盤上讀取數(shù)據(jù)之后,會根據(jù)鍵值進行排序,將具有相同鍵值的數(shù)據(jù)組織在一起。最后用戶自定義的Reduce函數(shù)會作用于這些排好序的結(jié)果并輸出最終結(jié)果。
MapReduce的核心設計思想是:①將問題分而治之;②用計算推到數(shù)據(jù)而不是用數(shù)據(jù)推到計算,有效避免數(shù)據(jù)傳輸過程中產(chǎn)生的大量通信開銷。MapReduce模型簡單,且現(xiàn)實中很多問題都可用MapReduce模型來表示。因此該模型公開后,立刻受到極大關注,并在生物信息學、文本挖掘等領域得到廣泛應用。