內容簡介
本書的知識架構是在培訓了多屆學員的基礎上總結整理得來的,已經經過了實踐的考驗,證實了其科學性;本書當中的案例都為企業實際開發的案例,通過學習這些大量的實際案例,幫助學生在進入企業後可以很快融入大數據工作崗位。本書包括大數據概論、初識Hadoop、認識HDFS、HDFS的運行機制、訪問HDFS、Hadoop I/O 詳解、認識MapReduce編程模型、MapReduce套用編程開發、MapReduce的工作機制與YARN平台、MapReduce高級開發、MapReduce實例共11章內容。本書既可作為高等院校學習大數據技術的教材,亦可作為廣大大數據技術學習者的入門用書。
目錄
•第1章大數據概論001
•1.1大數據時代背景001
•1.1.1大數據的數據源001
•1.1.2大數據的價值和影響002
•1.1.3大數據技術套用場景003
•1.1.4大數據技術的發展前景004
•1.2大數據基本概念005
•1.2.1大數據定義005
•1.2.2大數據結構類型007
•1.2.3大數據核心特徵007
•1.2.4大數據技術008
•1.2.5行業套用大數據實例010
•1.3大數據系統011
•1.3.1設計目標和原則011
•1.3.2當前大數據系統012
•1.4大數據與企業016
•1.4.1大數據對企業的挑戰性016
•1.4.2企業大數據的發展方向019
•1.4.3企業大數據觀020
•本章小結020
•習題021
•第2章初識Hadoop022
•2.1Hadoop簡介022
•2.1.1Hadoop概況022
•2.1.2Hadoop的功能和作用023
•2.1.3Hadoop的優勢023
•2.1.4Hadoop的發展史024
•2.1.5Hadoop的套用前景025
•2.2深入了解Hadoop025
•2.2.1Hadoop的體系結構025
•2.2.2Hadoop與分散式開發027
•2.2.3Hadoop生態系統029
•2.3Hadoop與其他系統030
•2.3.1Hadoop與關係型資料庫管理系統030
•2.3.2Hadoop與雲計算032
•2.4Hadoop套用案例032
•2.4.1Hadoop在百度的套用032
•2.4.2Hadoop在Yahoo!的套用033
2.4.3Hadoop在eBay的套用035
本章小結037
習題037
大數據
技術基礎
目錄
第3章認識HDFS039
3.1HDFS簡介039
3.2HDFS的特性和設計目標040
3.2.1HDFS的特性040
3.2.2HDFS的設計目標041
3.3HDFS的核心設計042
3.3.1數據塊042
3.3.2數據複製042
3.3.3數據副本的存放策略043
3.3.4機架感知045
3.3.5安全模式046
3.3.6負載均衡047
3.3.7心跳機制048
3.4HDFS的體系結構049
3.4.1Master/Slave架構049
3.4.2NameNode、SecondaryNameNode、DataNode050
本章小結055
習題055
第4章HDFS的運行機制056
4.1HDFS中數據流的讀寫056
4.1.1RPC實現流程056
4.1.2RPC實現模型057
4.1.3檔案的讀取059
4.1.4檔案的寫入060
4.1.5檔案的一致模型061
4.2HDFS的HA機制062
4.2.1為什麼有HA機制062
4.2.2HA集群和架構063
4.3HDFS的Federation機制064
4.3.1為什麼引入Federation機制064
4.3.2Federation架構066
4.3.3多命名空間管理067
本章小結067
習題068
第5章訪問HDFS069
5.1命令行常用接口069
5.1.1HDFS操作體驗069
5.1.2HDFS常用命令071
5.2Java接口073
5.2.1從Hadoop URL中讀取數據074
5.2.2通過FileSystem API讀取數據075
5.2.3寫入數據076
5.2.4創建目錄078
5.2.5查詢檔案系統078
5.2.6刪除數據081
5.3其他常用接口081
5.3.1Thrift081
5.3.2C語言082
5.3.3HTTP082
本章小結082
習題083
第6章Hadoop I/O詳解084
6.1數據完整性084
6.1.1HDFS的數據完整性084
6.1.2驗證數據完整性085
6.2檔案壓縮086
6.2.1Hadoop支持的壓縮格式086
6.2.2壓縮解壓縮算法codec087
6.2.3壓縮和輸入分片091
6.3檔案序列化092
6.3.1Writable接口093
6.3.2WritableComparable接口094
6.3.3Writable實現類095
6.3.4自定義Writable接口100
6.3.5序列化框架104
6.4Hadoop檔案的數據結構104
6.4.1SequenceFile存儲104
6.4.2MapFile存儲108
本章小結111
習題111第7章識識MapReduce編程模型113
7.1MapReduce編程模型簡介113
7.1.1什麼是MapReduce113
7.1.2MapReduce程式的設計方法114
7.1.3新舊MapReduce簡介115
7.1.4Hadoop MapReduce架構116
7.1.5MapReduce的優缺點117
7.2WordCount編程實例118
7.2.1WordCount的設計思路118
7.2.2編寫WordCount代碼118
7.2.3運行程式119
7.2.4代碼講解120
7.3MapReduce的編程122
7.3.1配置開發環境122
7.3.2編寫Mapper類124
7.3.3編寫Reducer類125
7.3.4編寫main函式125
7.4MapReduce在集群上的運作127
7.4.1作業的打包和啟動127
7.4.2MapReduce的Web界面128
7.4.3獲取結果130
本章小結131
習題131
第8章MapReduce套用編程開發132
8.1MapReduce類型與格式132
8.1.1MapReduce的類型132
8.1.2輸入格式137
8.1.3輸出格式148
8.2Java API解析150
8.2.1作業配置與提交151
8.2.2InputFormat接口的設計與實現152
8.2.3OutputFormat接口的設計與實現157
8.2.4Mapper與Reducer解析159
本章小結163
習題163
第9MapReduce的工作機制與YARN平台165
9.1YARN平台簡介165
9.1.1YARN的誕生165
9.1.2YARN的作用166
9.2YARN的架構166
9.2.1ResourceManager167
9.2.2ApplicationMaster168
9.2.3NodeManager168
9.2.4資源模型169
9.2.5ResourceRequest和Container169
9.2.6Container規範170
9.3剖析MapReduce作業運行機制170
9.4基於YARN的運行機制剖析171
9.5Shuffle和排序175
9.5.1map端175
9.5.2reduce端176
9.6任務的執行178
9.6.1任務執行環境178
9.6.2推測執行179
9.6.3關於OutputCommitters180
9.6.4任務JVM重用181
9.6.5跳過壞記錄182
9.7作業的調度182
9.7.1公平調度器183
9.7.2容量調度器183
9.8在YARN上運行MapReduce實例184
9.8.1運行Pi實例184
9.8.2使用WebGUI監控實例185
本章小結189
習題190
第10章MapReduce高級開發191
10.1計數器191
10.1.1內置計數器191
10.1.2自定義的Java計數器193
10.2數據去重194
10.2.1實例描述194
10.2.2設計思路194
10.2.3程式代碼194
10.3排序195
10.3.1實例描述196
10.3.2設計思路196
10.3.3程式代碼196
10.4二次排序197
10.4.1二次排序原理197
10.4.2二次排序的算法流程198
10.4.3代碼實現199
10.5平均值202
10.5.1實例描述202
10.5.2設計思路202
10.5.3程式代碼203
10.6Join聯接204
10.6.1Map端Join204
10.6.2Reduce端Join205
10.6.3Join實現表關聯205
10.7倒排索引209
10.7.1倒排索引的分析和設計209
10.7.2倒排索引完整源碼213
10.7.3運行代碼結果214
本章小結215
習題215
第11章MapReduce實例216
11.1搜尋引擎日誌處理216
11.1.1背景介紹216
11.1.2數據收集216
11.1.3數據結構216
11.1.4需求分析217
11.1.5MapReduce編碼實現217
11.2汽車銷售數據分析223
11.2.1背景介紹224
11.2.2數據收集224
11.2.3數據結構224
11.2.4需求分析224
11.2.5MapReduce編碼實現225
11.3農產品價格分析234
11.3.1背景介紹234
11.3.2數據收集235
11.3.3數據結構235
11.3.4需求分析236
11.3.5MapReduce編碼實現236
參考文獻248