隨著計算機技術(shù)的進步和發(fā)展,人類社會產(chǎn)生的數(shù)據(jù)正呈爆炸式增長。數(shù)據(jù)是人類社會重要的戰(zhàn)略資源,大數(shù)據(jù)是未來的新石油,大數(shù)據(jù)對未來的科技與經(jīng)濟發(fā)展將帶來重大影響,一個國家擁有數(shù)據(jù)的規(guī)模和運用數(shù)據(jù)的能力將成為綜合國力的重要組成部分,對數(shù)據(jù)的占有和控制也將成為國家和企業(yè)間爭奪的焦點。大數(shù)據(jù)如此重要,但大數(shù)據(jù)人才卻十分短缺,據(jù)統(tǒng)計,截至2018年美國大數(shù)據(jù)分析人才缺口是19萬人,中國作為全球第二大經(jīng)濟體,擁有的數(shù)據(jù)占全球總量的13%,增長速度保持在50%左右,明顯高于全球的增長速度。如此巨大的市場,大數(shù)據(jù)處理技術(shù)人才必將供不應(yīng)求,未來幾年我國將需要十幾萬大數(shù)據(jù)相關(guān)人才。
大數(shù)據(jù)平臺搭建與配置管理課程是大數(shù)據(jù)技術(shù)與應(yīng)用專業(yè)的必修核心課程,基于能力本位教育理念設(shè)計,以學(xué)生為中心,強調(diào)參與式、互動式的主動學(xué)習(xí)過程。本書基于學(xué)生能力的發(fā)展,旨在培養(yǎng)學(xué)生深入認識和使用Hadoop平臺,掌握Hadoop大數(shù)據(jù)平臺的搭建與配置管理,并利用Hadoop知識處理和解決實際問題。
本教材的參考學(xué)時為114學(xué)時,建議采用理論實踐一體化教學(xué)模式,各項目的參考學(xué)時見表1。
表1 學(xué)時分配表
單元 學(xué)時
單元1 Hadoop安裝與配置 12
單元2 分布式文件系統(tǒng)HDFS 18
單元3 分布式編程框架MapReduce 24
單元4 分布式服務(wù)框架Zookeeper 12
單元5 數(shù)據(jù)倉庫Hive 18
單元6 分布式數(shù)據(jù)庫HBase 18
單元7 流式數(shù)據(jù)處理框架Storm 12
課時總計 114
本書由鄧建萍任主編,并負責(zé)編寫單元1~單元4;周鋒任副主編,并負責(zé)編寫單元5、單元6;蔡斐負責(zé)編寫單元7和教材中所有代碼部分的檢查測試工作。
本書配套的資源包、運行腳本、電子教案等可登錄http://www1daoyuncom下載。
大數(shù)據(jù)技術(shù)發(fā)展日新月異,筆者在撰寫本書過程中,參考了大量國內(nèi)外的教材、博客、專著、論文和資料,對大數(shù)據(jù)知識進行了系統(tǒng)的梳理,但限于時間和水平,書中疏漏和不足之處在所難免,殷切希望廣大讀者批評指正。
編者
2020年6月
單元1 Hadoop安裝與配置1
任務(wù)1.1 安裝Linux虛擬環(huán)境1
1 Linux系統(tǒng)介紹2
2開源協(xié)議介紹7
任務(wù)1.2 使用Linux基礎(chǔ)操作命令16
1 Linux文件和目錄管理16
2 Linux用戶和用戶組管理19
3 Linux Shell簡介20
任務(wù)1.3 安裝Java28
1 Java簡介28
2 Java與Hadoop的關(guān)系34
任務(wù)1.4 安裝Hadoop單節(jié)點和集群37
1 Hadoop簡介37
2 Hadoop系統(tǒng)架構(gòu)41
小結(jié)46
習(xí)題46
單元2 分布式文件系統(tǒng)HDFS47
任務(wù)2.1 理解HDFS的讀寫過程47
1 HDFS文件系統(tǒng)簡介47
2 HDFS設(shè)計原則49
3 HDFS核心概念51
4 HDFS的HA方案53
任務(wù)2.2 使用Java操作HDFS58
1 HDFS簡介59
2 HDFS讀數(shù)據(jù)流程59
3 HDFS寫數(shù)據(jù)流程61
小結(jié)69
習(xí)題69
單元3 分布式編程框架MapReduce70
任務(wù)3.1 講解WordCount實例70
1 MapReduce概述70
2 MapReduce計算架構(gòu)73
任務(wù)3.2 分析MapReduce實例應(yīng)用83
1 MapReduce的Map過程83
2 MapReduce的Reduce過程85
小結(jié)91
習(xí)題92
單元4 分布式服務(wù)框架Zookeeper95
任務(wù)4.1 安裝與配置Zookeeper93
1 Zookeeper概述94
2 Zookeeper工作流96
3 Zookeeper leader選舉100
任務(wù)4.2 調(diào)用Zookeeper的Java客戶端API103
1 Zookeeper分布式協(xié)調(diào)服務(wù)原理103
2 Zookeeper znode剖析105
3解讀分布式鎖110
小結(jié)118
習(xí)題118
單元5數(shù)據(jù)倉庫Hive119
任務(wù)5.1 安裝與配置Hive119
1 Hive基礎(chǔ)知識120
2 Hive的工作123
3 Hive的數(shù)據(jù)類型124
4 Hive的數(shù)據(jù)模型125
5 Hive的架構(gòu)解析126
6 HiveQL127
任務(wù)5.2 調(diào)用Hive的Java API133
1 Hive函數(shù)與自定義函數(shù)134
2 Hive常用模式設(shè)計137
小結(jié)146
習(xí)題146
單元6 分布式數(shù)據(jù)庫HBase148
任務(wù)6.1 安裝與配置HBase148
1 HBase概述149
2 HBase基本原則和架構(gòu)152
3 HBase數(shù)據(jù)模型154
4 HBase HDFS目錄分析155
任務(wù)6.2 使用HBase Shell159
1 HBase Shell常用命令159
2 HBase架構(gòu)詳情162
3 HBase文件存儲與讀寫166
任務(wù)6.3 調(diào)用HBase的Java API175
1 HBase Schema設(shè)計規(guī)則175
2 HBase API基本訪問命令179
小結(jié)185
習(xí)題186
單元7 流式數(shù)據(jù)處理框架Storm190
任務(wù)7.1 安裝與配置Storm188
1 Storm概述與架構(gòu)188
2 Storm、Flink、Spark流式數(shù)據(jù)處理框架比較192
3 Storm基本概念與組件195
4 Storm的擴展197
任務(wù)7.2 使用Java開發(fā)Storm203
1深入剖析Storm Nimbus和Supervisor 203
2 Storm Worker、Executor和Task深入分析205
3 Storm的應(yīng)用開發(fā)和調(diào)試過程介紹206
小結(jié)217
習(xí)題217
參考文獻218