大數據技術全解:基礎、設計、開發與實踐

大數據技術全解:基礎、設計、開發與實踐

《大數據技術全解:基礎、設計、開發與實踐》是2014年1月出版的圖書,作者是楊巨龍。

基本介紹

  • 書名:大數據技術全解:基礎、設計、開發與實踐
  • 作者:楊巨龍
  • ISBN:978-7-121-22343-3
  • 頁數:376頁
  • 定價:59.00元
  • 出版社:電子工業出版社 
  • 出版時間:2014年1月
  • 開本:16開
內容簡介,圖書目錄,精彩節摘,前言,

內容簡介

《大數據技術全解:基礎、設計、開發與實踐》可以作為計算機軟體專業的本科生和研究生的大數據技術教材,也可作為大數據技術開發培訓、大數據系統諮詢規劃培訓的教材,更是大數據領域內一線的需求分析人員、系統分析人員、高級開發人員和開發管理人員的必備參考書。
本書重點不在於對大數據技術的原理性介紹,而是從實戰角度出發,系統地闡述如何基於Hadoop開源軟體為客戶設計、安裝和開發一個大數據系統。《大數據技術全解:基礎、設計、開發與實踐》還著重分享了具體實踐中的一些案例,不僅對於從事大數據系統開發的IT技術人員具有珍貴的參考價值,而且對準備實施大數據系統項目的企業級客戶也具有指導作用。

圖書目錄

第1 篇 基礎篇
第1 章 大數據的三把利劍........................ 2
1.1 豌豆雜交實驗.................................. 2
1.2 曹沖稱象啟示.................................. 2
1.3 谷歌的三把利劍............................... 4
1.4 智慧改變世界.................................. 4
第2 章 企業的大數據觀............................ 5
2.1 企業面臨的挑戰............................... 5
2.1.1 數據能力是核心競爭力....... 5
2.1.2 從粗放經營到智慧經營....... 6
2.1.3 技術與商業的雙重挑戰....... 6
2.2 企業大數據從哪來........................... 7
2.2.1 來自於主體的產生............... 7
2.2.2 來自於客體的產生............... 8
2.2.3 來自於社會的產生............... 9
2.3 企業大數據如何存儲....................... 9
2.3.1 非結構化數據存儲............... 9
2.3.2 結構化數據存儲................. 10
2.3.3 半結構化數據存儲..............11
2.3.4 大數據存儲的問題............. 12
2.4 企業大數據如何加工..................... 13
2.4.1 分析或挖掘模型設計......... 14
2.4.2 並行處理程式編碼............. 15
2.4.3 結果在全局中呈現............. 17
2.5 企業的大數據到哪裡去................. 17
2.5.1 大數據對企業影響深遠............................. 17
2.5.2 大數據是一種新商品......... 18
2.5.3 精準行銷需要大數據......... 18
2.6 企業大數據觀總結........................ 19
第3 章 大數據和大數據系統.................. 20
3.1 大數據............................................ 20
3.1.1 大數據概念......................... 20
3.1.2 大數據的特徵..................... 21
3.1.3 數據計量單位..................... 21
3.1.4 大數據來源......................... 22
3.1.5 大數據類型......................... 22
3.2 大數據系統.................................... 22
3.2.1 設計目標和原則................. 23
3.2.2 系統的設計思想................. 23
3.2.3 系統的邏輯架構................. 25
3.2.4 與現有系統的關係............. 26
3.2.5 當前的大數據系統............. 28
第2 篇 技術篇
第4 章 分布、鍵值對與族...................... 36
4.1 分布與MapReduce ........................ 36
4.2 鍵值對的奧妙所在......................... 38
4.3 動態資料庫表原理......................... 39
第5 章 HDFS(分散式檔案系統)........ 40
5.1 設計目標........................................ 40
5.2 基本概念........................................ 40
5.2.1 塊......................................... 41
5.2.2 名稱節點與數據節點......... 41
5.3 系統架構........................................ 42
5.3.1 邏輯架構............................. 42
5.3.2 物理架構............................. 43
5.4 運行機制........................................ 43
5.4.1 檔案讀取............................. 43
5.4.2 檔案寫入............................. 44
5.4.3 特別關注............................. 46
5.5 系統功能........................................ 49
5.5.1 多檔案系統......................... 49
5.5.2 目錄管理............................. 50
5.5.3 檔案管理............................. 50
5.5.4 檔案歸檔............................. 51
5.5.5 並行複製............................. 52
5.6 系統I/O 特性................................. 52
5.6.1 完整性校驗......................... 52
5.6.2 壓縮與編碼解碼................. 54
5.6.3 序列化................................. 55
5.6.4 特殊檔案結構..................... 56
5.7 非Java 訪問接口........................... 57
5.8 系統性能........................................ 58
5.8.1 可靠性措施......................... 58
5.8.2 性能最佳化............................. 59
第6 章 MapReduce 分散式編程模式.... 60
6.1 不同於傳統.................................... 60
6.2 設計思想........................................ 61
6.3 基本概念........................................ 61
6.3.1 map()函式........................... 62
6.3.2 reduce()函式........................ 62
6.3.3 鍵值對................................. 63
6.3.4 中間結果............................. 63
6.3.5 移動代碼............................. 64
6.3.6 作業和任務節點................. 65
6.4 系統架構........................................ 65
6.4.1 邏輯架構............................. 65
6.4.2 物理架構............................. 66
6.5 運行機制........................................ 67
6.5.1 作業運行............................. 67
6.5.2 作業調度............................. 69
6.5.3 任務執行............................. 70
6.5.4 狀態更新............................. 70
6.5.5 作業完成............................. 71
6.5.6 故障處理............................. 71
6.6 關鍵技術........................................ 72
6.6.1 計數器................................. 72
6.6.2 排序..................................... 73
6.6.3 連線..................................... 73
6.6.4 shuffle.................................. 74
6.6.5 記憶體處理............................. 75
6.6.6 分散式快取......................... 76
6.7 類型與格式.................................... 77
6.7.1 MR 的類型.......................... 77
6.7.2 輸入格式............................. 78
6.7.3 輸出格式............................. 80
6.8 MR 的開發..................................... 81
6.8.1 開發端環境的建立............. 82
6.8.2 開發及單元測試................. 84
6.8.3 本地運行測試..................... 87
6.8.4 集群運行............................. 89
6.8.5 作業調試............................. 92
6.8.6 遠程調試............................. 93
6.8.7 作業調優............................. 94
6.9 MR 工作流..................................... 95
第7 章 HBase 分散式資料庫................. 96
7.1 設計目標........................................ 96
7.2 基本概念........................................ 97
7.2.1 邏輯模型............................. 97
7.2.2 物理模型............................. 98
7.2.3 區域..................................... 99
7.2.4 基本單元............................. 99
7.2.5 Region 伺服器...................100
7.2.6 Master 主伺服器................101
7.2.7 .META.元數據表...............101
7.2.8 -ROOT-元數據表...............102
7.3 系統架構.......................................103
7.3.1 邏輯架構............................104
7.3.2 物理架構............................105
7.4 運行機制.......................................105
7.5 系統功能.......................................107
7.5.1 用戶界面............................107
7.5.2 shell 操作...........................109
7.6 庫表設計.......................................112
7.7 訪問接口.......................................112
第3 篇 設計篇
第8 章 系統設計背景和目標.................116
8.1 系統設計背景...............................116
8.2 系統設計目標...............................117
8.2.1 存在問題............................117
8.2.2 設計目標............................118
第9 章 系統架構設計............................ 121
9.1 邏輯架構設計.............................. 121
9.1.1 系統邏輯架構................... 121
9.1.2 系統運行邏輯................... 122
9.2 功能架構設計.............................. 123
9.2.1 大數據管理系統的功能............................... 124
9.2.2 ZooKeeper 系統的功能............................... 126
9.2.3 Chukwa 採集系統的功能............................... 127
9.2.4 Pig 系統功能..................... 127
9.2.5 Hive 系統功能.................. 128
9.3 數據架構設計.............................. 128
9.3.1 數據總體架構................... 129
9.3.2 分散式檔案數據結構....... 130
9.3.3 分散式資料庫數據結構............................130
9.3.4 關係型資料庫數據構成............................131
第10 章 運行架構設計...........................132
10.1 物理架構設計.............................133
10.1.1 網路拓撲..........................133
10.1.2 軟/硬體選型.....................133
10.2 集成架構設計.............................135
10.2.1 總體集成設計..................135
10.2.2 專項集成設計..................137
10.3 安全架構設計.............................140
10.3.1 用戶層安全......................140
10.3.2 套用層安全......................141
10.3.3 數據層安全......................141
10.4 開發架構設計.............................142
第4 篇 安裝篇
第11 章 安裝規劃............................... 144
11.1 安裝目標..................................... 144
11.2 安裝步驟..................................... 145
第12 章 環境準備............................... 147
12.1 主機準備.................................... 147
12.2 介質準備.................................... 147
12.3 基礎安裝.................................... 148
12.3.1 JDK 安裝......................... 148
12.3.2 用戶創建......................... 148
12.3.3 SSH 配置......................... 149
第13 章 集群安裝............................... 150
13.1 HDFS 集群................................. 150
13.1.1 解析配置......................... 150
13.1.2 模板創建......................... 151
13.1.3 複製分發......................... 153
13.1.4 運行啟動......................... 153
13.1.5 測試驗證......................... 154
13.2 HBase 集群................................. 156
13.2.1 解析配置......................... 156
13.2.2 模板創建......................... 157
13.2.3 複製分發......................... 158
13.2.4 運行啟動......................... 158
13.2.5 測試驗證..........................158
13.3 ZooKeeper 集群..........................159
13.3.1 解析配置..........................159
13.3.2 模板創建..........................160
13.3.3 複製分發..........................160
13.3.4 運行啟動..........................161
13.3.5 測試驗證..........................161
第14 章 分散式套用安裝....................163
14.1 Pig 安裝.......................................163
14.1.1 本地安裝..........................163
14.1.2 本地驗證..........................164
14.1.3 集成配置..........................164
14.1.4 集成驗證..........................165
14.2 Hive 安裝.....................................165
14.2.1 內嵌安裝與驗證..............166
14.2.2 從內嵌改為獨立..............166
14.2.3 從獨立改為遠程..............169
14.3 Chukwa 安裝...............................171
14.3.1 基礎系統安裝..................171
14.3.2 代理系統安裝..................172
14.3.3 收集系統的安裝..............174
14.3.4 作業系統的安裝..............175
14.3.5 HICC 系統的安裝...........176
第15 章 集成聯調............................... 177
15.1 集群間的集成聯調..................... 177
15.1.1 HBase 與HDFS集成聯調.......................... 177
15.1.2 HBase 與ZooKeeper集成聯調.......................... 178
15.2 分散式套用與集群間的集成聯調.................................... 179
15.2.1 Pig 與HDFS 的集成....... 179
15.2.2 Hive 與HDFS 的集成.... 180
15.2.3 Hive 與Hbase的集成...............................181
15.2.4 Chukwa 與HDFS的集成...............................183
15.3 客戶端與分散式系統間的集成聯調.....................................184
15.3.1 與分散式集群系統的集成...............................184
15.3.2 與分散式套用系統的集成................................185
第5 篇 開發篇
第16 章 大數據系統套用開發思路和環境............. 188
16.1 總體思路.................................... 188
16.1.1 大數據讀寫套用的開發............................. 188
16.1.2 大數據分析套用的開發............................. 188
16.2 開發環境.................................... 189
16.2.1 Plugin 外掛程式的安裝.......... 189
16.2.2 Hadoop 開發環境的配置............................. 190
16.2.3 示例程式驗證................. 191
第17 章 HDFS 檔案讀/寫套用開發..... 196
17.1 檔案列表.................................... 196
17.2 檔案讀取.................................... 197
17.3 檔案上傳.................................... 198
17.4 檔案創建.................................... 199
17.5 檔案寫入.................................... 200
17.6 檔案壓縮與解壓......................... 201
17.6.1 壓縮寫入......................... 201
17.6.2 解壓後讀取..................... 203
17.7 目錄創建.................................... 205
17.8 檔案重命名................................ 206
17.9 刪除檔案.................................... 207
17.10 查看檔案時間........................... 208
17.11 查看檔案是否存在................... 209
17.12 查找檔案位置........................... 210
17.13 查找集群所有的節點................211
17.14 SequenceFile 檔案格式轉換........................ 212
17.14.1 創建SequenceFile 格式的檔案............................213
17.14.2 讀取SequenceFile 格式的檔案............................215
17.15 MapFile 檔案格式轉換.............217
17.15.1 創建MapFile 格式的檔案............................217
17.15.2 讀取MapFile 格式的檔案............................218
17.15.3 SequenceFile 格式轉換成MapFile 格式.............220
第18 章 HBase 資料庫讀/寫套用開發...................................222
18.1 創建表.........................................222
18.2 刪除表.........................................224
18.3 查詢資料庫中的表.....................225
18.4 插入記錄.....................................226
18.5 查詢記錄.....................................228
18.5.1 列族的查詢......................228
18.5.2 查詢所有記錄..................229
18.5.3 基於行鍵查詢..................231
18.5.4 基於標籤值查詢..............232
18.5.5 組合條件查詢..................234
18.6 修改記錄.....................................236
18.7 刪除記錄.....................................237
第19 章 ZooKeeper 開發..................... 238
19.1 創建節點.................................... 238
19.2 刪除節點.................................... 240
19.3 加入子節點................................ 242
19.4 列出節點成員............................. 242
19.5 獲取節點內容............................. 244
第20 章 MapReduce 開發................... 247
20.1 定製數據類型............................. 247
20.2 定製輸入格式............................. 250
20.3 定製輸出格式............................. 254
20.4 將整個檔案作為輸入................. 259
20.5 小檔案聚合成一個檔案............. 264
20.6 多集合檔案輸出......................... 266
20.7 對壓縮數據處理......................... 268
20.8 定製partioner ............................. 271
20.9 定製combiner ............................ 274
20.10 MapReduce 組合...................... 278
20.10.1 疊代組合....................... 278
20.10.2 線性組合....................... 283
20.10.3 依賴組合....................... 284
20.10.4 前後鏈式組合............... 288
20.11 多數據源連線........................... 292
20.11.1 Reduce 端連線.............. 292
20.11.2 Map 端連線................... 297
20.11.3 Map 端過濾的Reduce端連線........................... 300
20.12 全局參數套用...........................305
20.13 全局檔案套用...........................309
20.14 關係資料庫訪問.......................311
20.14.1 關係資料庫讀取............312
20.14.2 關係資料庫的寫入........315
第21 章 Pig 開發....................................319
21.1 腳本編程.....................................319
21.1.1 腳本語言..........................319
21.1.2 腳本編程..........................322
21.1.3 腳本運行..........................323
21.2 自定義函式.................................327
21.2.1 編譯打包..........................327
21.2.2 測試運行..........................328
第22 章 Hive 開發..................................329
22.1 HiveQL 語言...............................329
22.1.1 HiveQL 的數據類型........329
22.1.2 HiveQL 的常用操作........330
22.2 UDF 編碼....................................339
22.3 UDAF 編碼.................................341
22.4 客戶端編碼.................................343
22.4.1 與Hive 伺服器端連線建立..................................343
22.4.2 與Hive 進行指令互動....344
22.4.3 客戶端命令組織..............345
22.4.4 程式運行結果..................346
第6 篇 實踐篇
第23 章 企業大數據盤系統.................. 348
23.1 系統開發背景............................. 348
23.2 系統架構設計............................. 348
23.3 系統功能設計............................. 349
23.4 系統代碼實現............................. 350
第24 章 Hadoop 的日誌分析............... 352
24.1 系統開發背景............................. 352
24.2 系統架構設計............................. 352
24.3 系統功能設計.............................353
24.4 系統代碼實現.............................353
24.4.1 系統連線代碼..................353
24.4.2 Hive 模組代碼.................355
24.4.3 系統組織代碼..................356
24.5 系統實現效果.............................357
參考文獻.....................................................358

精彩節摘

這次是我第一次為別人的書寫序。序要求是非常有高度的、簡練的文字。一方面,本人向來文學水平一般,無法寫出很漂亮的文字;另一方面,一直覺得自己在學術方面的造詣太淺,為別人的書寫序,有點班門弄斧的感覺。自己同時也怕序沒有寫好,反而給書帶來了負面的影響。這次是因為受了感動,才冒著各種壓力,絞盡腦汁來寫這個序。
作者是一個我敬佩的人,敢於做非常具有挑戰性的工作。寫書本來不是一件不容易的事情,寫一本關於最新的技術的書,更加不容易。除了作者自身需要有很高的技術造詣,對書中相關技術的理解足夠深刻外,還需要作者具備很強的表達能力和說服能力,把最新技術的奧秘清晰明了地展現給讀者,讓讀者能夠非常享受地從書中了解並明白技術及其內涵。同時,作者還要在內容和描述上非常有說服力,以各種論證、對比、案例等形式來讓讀者接受新的技術。通常,關於最新技術的對比和案例等都特別貧乏,作者必須花大量的時間來自行設計和
調研才能獲得這些信息。本書的作者在寫書過程中,每次都讓我感到他非常堅定的信念,我深信他會堅持完成這個書稿。同時,他的書稿通俗易懂並且有足夠的技術深度。作者漂亮地完成如此具有挑戰性的工作,贏得了他應該有的尊重,這讓我非常感動。
本書的內容展現了大數據領域中一些最新的技術,主要集中於Hadoop 生態中的HDFS(分散式檔案系統)、MapReduce 分散式計算框架以及HBase 分散式資料庫三大核心部件的相關技術和實現。作者分別從基礎、技術、設計、安裝、開發、實踐等六個方面來展開這些技術,兼顧了技術原理、具體操作以及設計開發三個層面。不同背景、不同層次和不同目的的讀者可以從這三個層面的六個方面來有選擇地進行閱讀。作者憑藉其技術造詣,對內容的設計和編排以及技術的深度等把握得很好。
從技術層面,大數據是當前應對大規模基礎設施以及大規模數位化後所產生的巨量數據的最為有效的技術之一。大數據提供了高效和高性能的數據採集、處理、存儲、分析和挖掘的技術,使我們可以從容應對當前的巨量數據。從科學層面,大數據是當前數據科學的一個具體的技術實現,是當前科學發現中基於實驗的科學發現方法、基於理論的科學發現方法和基於計算的科學發現方法以外的一種創新的科學發現方法。其主要思想是憑藉巨量的數據,找出部分現象的有價值的信息,如各種現象之間的關聯等。一些實際案例顯示,大數據在部分領域的套用中能夠有效地從巨量的、低價值密度的數據中分析挖掘出有價值的信息。
大數據技術的流行度和熱度,相信讀者都已經感受到了。此書可以協助讀者進一步了解大數據領域中部分最新的技術,幫助讀者學習和掌握這些技術的精髓,推動大數據在更加廣泛的範圍內的套用。
趙淦森
華南師範大學計算機學院 博士生導師
大數據無疑是當前IT 產業界的熱點。由於它對綜合技術能力要求較高,各位初學者該如何“擁抱大數據”,還沒有人能給出答案。本書可謂是“久旱中的甘霖”,為大家打開了大數據這一領域的大門,從大數據的基礎技術,到系統的設計理論,無不進行了全面的概括和總結;本書絕不類似於當前一些大數據書籍的淺嘗輒止,作者傾盡筆墨對大數據的系統設計、環境安裝及開發實踐進行了論述,使讀者可以“登堂入室”,快速投入實戰,把大數據技術從概念轉化為實際的研發能力。巨龍兄在IT 產業界已經工作了20 余載,長期從事IT 企業高層技術管理工作,對諮詢規劃、技術研發、人才培養等各環節都非常擅長。書中隨處可見他對大數據技術的深入理解,以及多年來孜孜不倦的經驗總結,各處“殺馬特”的概括和點評閃爍著智慧的光芒,使人深受啟發。“集大成者得智慧”,看完本書後,仍讓人回味猶長。
本書可謂IT 界“老少鹹宜”的一本好書,因此向各位讀者隆重推薦本書,期望它能夠對您的學業或工作帶來更進一步的幫助。
孫傲冰
國雲科技技術副總裁

前言

谷歌(Google)利用大數據技術在短短十多年內將寂寂無名的草根企業迅速打造成為全球著名的IT企業,這段商業傳奇將全球的目光都聚焦到了大數據上,人們一致認為大數據時代已不可阻擋地到來了,任何個人和組織都將無法逃避大數據時代帶來的挑戰。眼下大數據已成為全社會關注的熱點,政府、學校、企業等都積極投身於對大數據的討論、研究和建設中,因為人們都深刻地認識到,大數據必將改變社會的未來。
在大數據時代,企業信息化建設該如何藉助大數據技術來支撐商業模式、業務模式以及經營模式的創新和變革,以適應時代變化的需要,是當下企業最迫切需要解決的問題。早在20世紀80年代,美國著名學者諾蘭就提出了著名的企業信息化建設六階段的諾蘭模型,模型中指出了數據管理和數據治理是企業信息化建設的最高階段,在這個階段,企業數據的發展和企業的發展是同步的。在諾蘭模型提出30年後的今天,大數據技術的出現在證明了諾蘭的先見性的同時,也為企業信息化建設向高級階段邁進奠定了堅實的技術基礎。
“三分虛擬化技術、七分分散式管理、十二分大數據”將是企業在大數據時代下信息化建設的指導思想。作者遵循這一思想,重點闡述了企業如何利用開源的大數據相關產品來進行企業大數據系統的設計和開發。企業可以通過本書所描述的方法,在現有信息化建設的基礎上快速構建出企業大數據系統。
致謝
本書完成後,我將去中國科學院雲計算中心工作。這么多年的努力,我終於找到了一群志同道合的夥伴,終於有了一個施展才華的平台。感謝中國科學院雲計算中心的領導和同仁們,讓有我了與你們一起為國家雲計算、大數據建設和發展共同奮鬥的機會。
華南師範大學的趙淦森博士一直致力於大數據技術的研究和推廣工作,從他那裡我得到了許多新的觀點,在本書的寫作過程中給我帶來了很多啟發。趙博士還在百忙之中抽空為本書作了序,在此表示衷心的感謝!
這本書的出版離不開電子工業出版社博文視點的郭立、孫學瑛等傾注的心血,正是他們不懈的努力才使得本書能與讀者見面,在此對他們表示敬意。
我還要感謝我的朋友張業青、沈金、劉廣平、陳建軍等,是他們平時的交流和鼓勵給了我創作的激情。
寫作本書的工作量非常大,如果沒有家庭長期以來的支持,我是不可能完成此書的。在此要感謝我的妻子王愛珍,感謝這么多年對我的鼓勵和支持;還要感謝我的女兒王安迪,一直都理解老爸並給以鼓勵,在此預祝她2014年高考能取得好成績,進入自己心儀的大學。
聯繫作者
作者的筆名是老莊,取自“老子”和“莊子”,多年來一直堅持軟體是一門理論和實踐相結合的學科的理念,試圖找出軟體中本源的東西。
如果您發現本書的問題或者需要詢問技術問題 ,可以通過作者的微博和郵件進行交流。

相關詞條

熱門詞條

聯絡我們