內容簡介
本書採用“理論+實戰”的形式編寫,全面介紹了Hadoop大數據挖掘的相關知識。本書秉承循序漸進、易於理解、學以致用和便於查詢的講授理念,講解時結合了大量實例和作者多年積累的一線開發經驗。本書作者擁有豐富的視頻製作與線上教學經驗,曾經與極客學院合作開設過線上視頻教學課程。為了幫助讀者高效、直觀地學習本書內容,作者特意為本書錄製了配套教學視頻,這些教學視頻和本書配套原始碼檔案讀者都可以免費獲取。
本書共分為13章,涵蓋的主要內容有:集群及開發環境搭建;快速構建一個Hadoop項目併線上運行;Hadoop套件實戰;Hive編程——使用SQL提交MapReduce任務到Hadoop集群;遊戲玩家的用戶行為分析——特徵提取;Hadoop平台管理與維護;Hadoop異常處理解決方案;初識Hadoop核心源碼;Hadoop通信機制和內部協定;Hadoop
分散式檔案系統剖析;ELK實戰案例——遊戲套用實時日誌分析平台;Kafka實戰案例——實時處理遊戲用戶數據;Hadoop拓展——Kafka剖析。本書通俗易懂,案例豐富,實用性強,不但適合初學者系統學習Hadoop的各種基礎語法和開發技巧,而且也適合有開發經驗的程式設計師進階提高。另外,本書還適合社會培訓機構和相關院校作為教材或者教學參考書。
圖書目錄
第1章 集群及開發環境搭建.... 1
1.1 環境準備.. 1
1.1.1 基礎軟體下載.. 1
1.1.2 準備Linux作業系統.. 2
1.2 安裝Hadoop. 4
1.2.1 基礎環境配置.. 4
1.2.2 Zookeeper部署.. 7
1.2.3 Hadoop部署.. 9
1.2.4 效果驗證.. 21
1.2.5 集群架構詳解.. 24
1.3 Hadoop版HelloWorld. 25
1.3.1 Hadoop Shell介紹.. 25
1.3.2 WordCount初體驗.. 27
1.4 開發環境.. 28
1.4.1 搭建本地開發環境... 28
1.4.2 運行及調試預覽.. 31
1.5 小結.. 34
第2章 實戰:快速構建一個Hadoop項目併線上運行.... 35
2.1 構建一個簡單的項目工程.. 35
2.1.1 構建Java Project結構工程.. 35
2.1.2 構建Maven結構工程.. 36
2.2 操作分散式檔案系統(HDFS).. 39
2.2.1 基本的套用接口操作.. 39
2.2.2 在高可用平台上的使用方法.. 42
2.3 利用IDE提交MapReduce作業.. 43
2.3.1 在單點上的操作.. 43
2.3.2 在高可用平台上的操作.. 46
2.4 編譯應用程式並打包.. 51
2.4.1 編譯Java Project工程並打包.. 51
2.4.2 編譯Maven工程並打包.. 55
2.5 部署與調度.. 58
2.5.1 部署套用.. 58
2.5.2 調度任務.. 59
2.6 小結.. 60
第3章 Hadoop套件實戰.... 61
3.1 Sqoop——數據傳輸工具.. 61
3.1.1 背景概述.. 61
3.1.2 安裝及基本使用.. 62
3.1.3 實戰:在
關係型資料庫與分散式檔案系統之間傳輸數據.. 64
3.2 Flume——日誌收集工具.. 66
3.2.1 背景概述.. 67
3.2.2 安裝與基本使用.. 67
3.2.3 實戰:收集系統日誌並上傳到分散式檔案系統(HDFS)上.. 72
3.3 HBase——分散式資料庫.. 74
3.3.1 背景概述.. 74
3.3.2 存儲架構介紹.. 75
3.3.3 安裝與基本使用.. 75
3.3.4 實戰:對HBase業務表進行增、刪、改、查操作.. 79
3.4 Zeppelin——數據集分析工具.. 85
3.4.1 背景概述.. 85
3.4.2 安裝與基本使用.. 85
3.4.3 實戰:使用解釋器操作不同的數據處理引擎.. 88
3.5 Drill——低延時SQL查詢引擎.. 92
3.5.1 背景概述.. 93
3.5.2 安裝與基本使用.. 93
3.5.3 實戰:對分散式檔案系統(HDFS)使用SQL進行查詢.. 95
3.5.4 實戰:使用SQL查詢HBase資料庫.. 99
3.5.5 實戰:對數據倉庫(Hive)使用類實時統計、查詢操作.. 101
3.6 Spark——實時流數據計算.. 104
3.6.1 背景概述.. 104
3.6.2 安裝部署及使用.. 105
3.6.3 實戰:對接Kafka訊息數據,消費、計算及落地.. 108
3.7 小結.. 114
第4章 Hive編程——使用SQL提交MapReduce任務到Hadoop集群.... 115
4.1 環境準備與Hive初識.. 115
4.1.1 背景介紹.. 115
4.1.2 基礎環境準備.. 116
4.1.3 Hive結構初識.. 116
4.1.4 Hive與關係型資料庫(RDBMS).. 118
4.2 安裝與配置Hive 118
4.2.1 Hive集群基礎架構.. 119
4.2.2 利用HAProxy實現Hive Server負載均衡.. 120
4.2.3 安裝分散式Hive集群.. 123
4.3 可程式方式.. 126
4.3.1 數據類型.. 126
4.3.2 存儲格式.. 128
4.3.3 基礎命令.. 129
4.3.4 Java程式語言運算元據倉庫(Hive).. 131
4.3.5 實踐Hive Streaming. 134
4.4 運維和監控.. 138
4.4.1 基礎命令.. 138
4.4.2 監控工具Hive Cube 140
4.5 小結.. 143
第5章 遊戲玩家的用戶行為分析——特徵提取.... 144
5.1 項目套用概述.. 144
5.1.1 場景介紹.. 144
5.1.2 平台架構與數據採集.. 145
5.1.3 準備系統環境和軟體.. 147
5.2 分析與設計.. 148
5.2.1 整體分析.. 148
5.2.2 指標與數據源分析.. 149
5.2.3 整體設計.. 151
5.3 技術選型.. 153
5.3.1 套件選取簡述.. 154
5.3.2 套件使用簡述.. 154
5.4 編碼實踐.. 157
5.4.1 實現代碼.. 157
5.4.2 統計結果處理.. 163
5.4.3 套用調度.. 169
5.5 小結.. 174
第6章 Hadoop平台管理與維護.... 175
6.1 Hadoop分散式檔案系統(HDFS).. 175
6.1.1 HDFS特性.. 175
6.1.2 基礎命令詳解.. 176
6.1.3 解讀NameNode Standby. 179
6.2 Hadoop平台監控.. 182
6.2.1 Hadoop日誌.. 183
6.2.2 常用分散式監控工具.. 187
6.3 平台維護.. 196
6.3.1 安全模式.. 196
6.3.2 節點管理.. 198
6.3.3 HDFS快照.. 200
6.4 小結.. 203
第7章 Hadoop異常處理解決方案.... 204
7.1 定位異常.. 204
7.1.1 跟蹤日誌.. 204
7.1.2 分析異常信息.. 208
7.1.3 閱讀開發業務代碼.. 209
7.2 解決問題的方式.. 210
7.2.1 搜尋關鍵字.. 211
7.2.2 查看Hadoop JIRA. 212
7.2.3 閱讀相關源碼.. 213
7.3 實戰案例分析.. 216
7.3.1 案例分析1:啟動HBase失敗.. 216
7.3.2 案例分析2:HBase表查詢失敗.. 219
7.3.3 案例分析3:Spark的臨時數據不自動清理.. 222
7.4 小結.. 223
第8章 初識Hadoop核心源碼.... 224
8.1 基礎準備與源碼編譯.. 224
8.1.1 準備環境.. 224
8.1.2 載入源碼.. 228
8.1.3 編譯源碼.. 230
8.2 初識Hadoop2. 233
8.2.1 Hadoop的起源.. 233
8.2.2 Hadoop 2源碼結構圖.. 234
8.2.3 Hadoop模組包.. 235
8.3 MapReduce框架剖析.. 236
8.3.1 第一代MapReduce框架.. 236
8.3.2 第二代MapReduce框架.. 238
8.3.3 兩代MapReduce框架的區別.. 239
8.3.4 第二代MapReduce框架的重構思路.. 240
8.4 序列化.. 241
8.4.1 序列化的由來.. 242
8.4.2 Hadoop序列化.. 243
8.4.3 Writable實現類.. 245
8.5 小結.. 247
第9章 Hadoop通信機制和內部協定.... 248
9.1 Hadoop RPC概述.. 248
9.1.1 通信模型.. 248
9.1.2 Hadoop RPC特點.. 250
9.2 Hadoop RPC的分析與使用.. 251
9.2.1 基礎結構.. 251
9.2.2 使用示例.. 257
9.2.3 其他開源RPC框架.. 264
9.3 通信協定.. 266
9.3.1 MapReduce通信協定.. 266
9.3.2 RPC協定的實現.. 273
9.4 小結.. 277
第10章 Hadoop分散式檔案系統剖析.... 278
10.1 HDFS介紹.. 278
10.1.1 HDFS概述.. 278
10.1.2 其他分散式檔案系統.. 282
10.2 HDFS架構剖析.. 283
10.2.1 設計特點.. 283
10.2.2 命令空間和節點.. 285
10.2.3 數據備份剖析.. 289
10.3 數據遷移實戰.. 292
10.3.1 HDFS跨集群遷移.. 292
10.3.2 HBase集群跨集群數據遷移.. 297
10.4 小結.. 301
第11章 ELK實戰案例——遊戲套用實時日誌分析平台.... 302
11.1 Logstash——實時日誌採集、分析和傳輸.. 302
11.1.1 Logstash介紹.. 302
11.1.2 Logstash安裝.. 306
11.1.3 實戰操作.. 308
11.2 Elasticsearch——分散式存儲及搜尋引擎.. 309
11.2.1 套用場景.. 309
11.2.2 基本概念.. 310
11.2.3 集群部署.. 312
11.2.4 實戰操作.. 317
11.3 Kibana——
可視化管理系統.. 323
11.3.1 Kibana特性.. 324
11.3.2 Kibana安裝.. 324
11.3.3 實戰操作.. 328
11.4 實時日誌分析平台案例.. 331
11.4.1 案例概述.. 331
11.4.2 平台體系架構與剖析.. 332
11.4.3 實戰操作.. 334
11.5 小結.. 339
第12章 Kafka實戰案例——實時處理遊戲用戶數據.... 340
12.1 套用概述.. 340
12.1.1 Kafka回顧.. 340
12.1.2 項目簡述.. 347
12.1.3 Kafka工程準備.. 348
12.2 項目的分析與設計.. 349
12.2.1 項目背景和價值概述.. 349
12.2.2 生產模組.. 350
12.2.3 消費模組.. 352
12.2.4 體系架構.. 352
12.3 項目的編碼實踐.. 354
12.3.1 生產模組.. 354
12.3.2 消費模組.. 356
12.3.3 數據持久化.. 362
12.3.4 套用調度.. 364
12.4 小結.. 369
第13章 Hadoop拓展——Kafka剖析.... 370
13.1 Kafka開發與維護.. 370
13.1.1 接口.. 370
13.1.2 新舊API編寫.. 372
13.1.3 Kafka常用命令.. 380
13.2 運維監控.. 383
13.2.1 監控指標.. 384
13.2.2 Kafka開源監控工具——Kafka Eagle 384
13.3 Kafka源碼分析.. 391
13.3.1 源碼工程環境構建.. 391
13.3.2 分散式選舉算法剖析.. 394
13.3.3 Kafka Offset解讀.. 398
13.3.4 存儲機制和副本.. 398
13.4 小結.. 402
名人推薦
本書不僅全面介紹了Hadoop的語法和開發技巧,而且還剖析了作者開發的Kafka開源監控工具Kafka Eagle的設計和架構思想,給讀者提供了一個從入門到進階的漸進式學習路徑,是一本值得反覆閱讀的佳作。
——微眾銀行數據科學與智慧型套用部 鐘晧明(博士)
本書是作者多年Hadoop項目開發的經驗總結。對於想要學習Hadoop大數據挖掘技術的讀者而言,本書是一本很好的自學教程。作者用簡單明了的語言,由淺入深地介紹了書中的每個知識點,並結合大量實例分析問題,可以幫助讀者很好地掌握Hadoop技術的重要知識點和開發技巧。
——小米科技大數據&雲技術SRE負責人 劉亞運
作者簡介
鄧傑 部落格園資深博主,資深大數據全棧開發者,極客學院大數據講師,開源愛好者。善於開發大數據監控系統輔助日常工作,提升工作效率。主導開發了大數據自助類平台系統。開發並在GitHub上發布了Kafka系統監控管理工具Kafka Eagle,深受業內開發者的讚譽。作為極客學院特邀講師,製作了多個技術視頻,講授Hadoop和Kafka等相關技術課程,廣受學員好評。