MapReduce模式、算法和用例
隨著 Hadoop 和大數據應用的爆發式增長,很多人正在尋找將他們已有的實現轉為 MapReduce 方式的方法。不幸的是,除了《應用 MapReduce 進行數據密集的文本處理》和《Mahout in Action》幾本有名書籍之外,很少有關設計 MapReduce 實現的出版物。在新文章“MapReduce 模式、算法和用例”中,Ilya Katsov 提供了一個系統化的綜述,闡述了能夠應用 MapReduce 框架解決的問題。
文章開始描述了一個非常簡單的、作為通用的并行計算框架的 MapReduce 應用,這個框架適用于很多要求大量節點進行的計算和數據密集型計算,包括物理和工程仿真,數值分析,性能測試等等。接下來是一組算法,通常用于日志分析、 ETL 和數據查詢,包括計數及求和,數據整理(基于特定函數),過濾,解析,驗證和排序。
第二大部分是關于 MapReduce 模式,Katsov 討論了包括多關系形 MapReduce 模式,通常用于數據倉庫應用程序。這些模式在 Hive 和 Pig 實現中廣泛使用,并包括基于推斷/函數的數據選擇,數據預測、數據聯合、差分、交集和分組等聚集計算。另一個討論是關于實現數據關聯和包含等算法,例如 repartition join 和重復聯合。
更進一步,這篇文章討論了更為復雜的 MapReduce 處理算法,包括圖處理、搜索算法(廣度優先搜索)、page rank 數據集合算法,這些算法應用于圖分析、web 索引和通用搜索應用。文章也涵蓋了常見的、需要互相關計算的文本分析和市場分析的用例。這部分包含了”pairs“和”stripes”設計模式和它們的相對優劣。
最后,Katsov 給出了一個在機器學習領域實現更復雜 MapReduce 的很好的參考書目。
文中描述的大多數算法都有偽代碼描述及它們的適用性,優勢、劣勢和一些真實的用例。
如今很多人仍面臨應用 Hadoop 和 MapReduce 解決業務問題的困擾。有些人仍然認為 MapReduce 是“搜索業務問題領域的技術手段”。這篇文章是填補 MapReduce 算法、用例和設計模式空缺的重要一步。它展示了 MapReduce 強大的力量,而不僅僅是用那個聲名狼藉的“詞語計數”例子,并顯示了 MapReduce 可以解決眾多實際問題的方式。