MapReduce作為一種分布式海量數(shù)據(jù)處理的編程框架,已經(jīng)得到業(yè)界的廣泛關(guān)注。隨著Hadoop的普及,MapReduce目前已經(jīng)成為海量數(shù)據(jù)處理的最基礎(chǔ)但也是最重要的方法之一。
《MapReduce設(shè)計模式》是一本關(guān)于設(shè)計模式的書,為讀者提供解決問題的模板或通用指南。書中主要介紹編程模式,即如何利用MapReduce框架解決一類問題,重在提供解決問題的方法和思路。作者花大量篇幅介紹各種模式的原理及實(shí)現(xiàn)機(jī)制,并給出相應(yīng)的應(yīng)用實(shí)例,讓讀者對每種模式能有更直觀的理解。
由于本書不會過多涉及底層框架及MapReduce API,所以希望讀者閱讀《MapReduce設(shè)計模式》之前,能夠?qū)adoop系統(tǒng)有所了解,知道如何編寫MapReduce程序,并了解MapReduce程序框架的工作原理!禡apReduce設(shè)計模式》面向中高級MapReduce開發(fā)者,涵蓋了絕大部分MapReduce編程可能面對的場景,相信初學(xué)者和專家同樣可以在本書中得到一些啟示。
Donald Miner目前是EMC Greenplum的解決方案架構(gòu)師,為實(shí)現(xiàn)與使用基于Greenplum的大數(shù)據(jù)系統(tǒng)的用戶提供咨詢和幫助。在加入Greenplum之前,Miner博士作為承包商為美國政府部署和構(gòu)建了多個規(guī)模巨大且涉及關(guān)鍵任務(wù)的Hadoop集群。他還參與了教學(xué),在馬里蘭大學(xué)巴爾的摩分校(UMBC)講授Hadoop方面的業(yè)界前沿相關(guān)的課程以及各種人工智能課程。Miner博士在UMBC獲得了計算機(jī)科學(xué)的博士學(xué)位,讀博士期間他的研究主題為機(jī)器學(xué)習(xí),博士論文的主題是多智能體系統(tǒng)。
Adam Shook是ClearEdge IT Solutions公司的軟件工程師,從事一些大數(shù)據(jù)技術(shù)工作,如Hadoop、Accumulo、Pig以及ZooKeeper。Shook在馬里蘭大學(xué)巴爾的摩分校(UMBC)獲得了計算機(jī)科學(xué)的學(xué)士學(xué)位,并得到了一份為游戲工作室構(gòu)建一個全新的高性能圖像引擎的工作。為了尋求新的挑戰(zhàn),他在UMBC就讀研究生,主要專注的研究方向是分布式計算的相關(guān)技術(shù)。他很快找到了一份開發(fā)工作,作為美國政府承包商,從事大規(guī)模的Hadoop部署。Shook參與了Hadoop和Pig的開發(fā)及培訓(xùn)課程的指導(dǎo)。在繁忙工作的間隙他喜歡參與相關(guān)項(xiàng)目,玩視頻游戲。
第1章 設(shè)計模式與MapReduce 1
1.1 設(shè)計模式 2
1.2 MapReduce簡史 3
1.3 MapReduce和Hadoop簡介 4
1.4 Hadoop示例:單詞計數(shù) 6
1.5 Pig和Hive 10
第2章 概要模式 12
2.1 數(shù)值概要 12
2.1.1 模式描述 12
2.1.2 數(shù)值概要示例 16
2.2 倒排索引概要 30
2.2.1 模式描述 30
2.2.2 倒排索引示例 32
2.3 計數(shù)器計數(shù) 34
2.3.1 模式描述 34
2.3.2 計數(shù)器計數(shù)示例 36
第3章 過濾模式 39
3.1 過濾 40
3.1.1 模式描述 40
3.1.2 過濾示例 43
3.2 布隆過濾 45
3.2.1 模式描述 45
3.2.2 布隆過濾器示例 48
3.3 Top 10 53
3.3.1 模式描述 53
3.3.2 Top 10示例 58
3.4 去重 60
3.4.1 模式描述 60
3.4.2 去重示例 63
第4章 數(shù)據(jù)組織模式 65
4.1 分層結(jié)構(gòu) 65
4.1.1 模式描述 65
4.1.2 分層結(jié)構(gòu)示例 69
4.2 分區(qū) 76
4.2.1 模式描述 76
4.2.2 分區(qū)示例 79
4.3 分箱 81
4.3.1 模式描述 81
4.3.2 分箱示例 83
4.4 全排序 85
4.4.1 模式描述 85
4.4.2 全排序示例 88
4.5 混排 92
4.5.1 模式描述 92
4.5.2 混排示例 93
第5章 連接模式 96
5.1 連接簡介 97
5.2 reduce端連接 102
5.2.1 模式描述 102
5.2.2 reduce端連接示例 104
5.2.3 使用布隆過濾器的reduce端連接 110
5.3 復(fù)制連接 112
5.3.1 模式描述 112
5.3.2 復(fù)制連接示例 114
5.4 組合連接 116
5.4.1 模式描述 116
5.4.2 組合連接示例 119
5.5 笛卡兒積 121
5.5.1 模式描述 121
5.5.2 笛卡兒積示例 124
第6章 元模式 131
6.1 作業(yè)鏈 131
6.1.1 關(guān)于驅(qū)動程序 132
6.1.2 作業(yè)鏈?zhǔn)纠?33
6.1.3 關(guān)于shell腳本 142
6.1.4 關(guān)于JobControl 145
6.2 鏈折疊 149
6.2.1 ChainMapper方法和ChainReducer方法 153
6.2.2 鏈折疊示例 153
6.3 作業(yè)歸并 158
作業(yè)歸并示例 160
第7章 輸入和輸出模式 166
7.1 在Hadoop中自定義輸入和輸出 166
7.1.1 InputFormat 167
7.1.2 RecordReader 168
7.1.3 OutputFormat 169
7.1.4 RecordWriter 170
7.2 生成數(shù)據(jù) 170
7.2.1 模式描述 170
7.2.2 生成數(shù)據(jù)示例 172
7.3 外部源輸出 177
7.3.1 模式描述 177
7.3.2 外部源輸出示例 179
7.4 外部源輸入 183
7.4.1 模型描述 183
7.4.2 外部源輸入示例 185
7.5 分區(qū)裁剪 190
7.5.1 模式描述 190
7.5.2 分區(qū)裁剪示例 192
第8章 最后的思考與設(shè)計模式的未來 203
8.1 數(shù)據(jù)的本質(zhì)趨勢 203
8.1.1 圖像、音頻和視頻 203
8.1.2 流式數(shù)據(jù) 204
8.2 YARN的影響 204
8.3 作為庫或者組件的模式 205
8.4 讀者可以幫到什么 205
附錄 布隆過濾器 207