隨著計(jì)算機(jī)技術(shù)的進(jìn)步和發(fā)展,人類社會(huì)產(chǎn)生的數(shù)據(jù)正呈爆炸式增長(zhǎng)。數(shù)據(jù)是人類社會(huì)重要的戰(zhàn)略資源,大數(shù)據(jù)是未來的新石油,大數(shù)據(jù)對(duì)未來的科技與經(jīng)濟(jì)發(fā)展將帶來重大影響,一個(gè)國(guó)家擁有數(shù)據(jù)的規(guī)模和運(yùn)用數(shù)據(jù)的能力將成為綜合國(guó)力的重要組成部分,對(duì)數(shù)據(jù)的占有和控制也將成為國(guó)家和企業(yè)間爭(zhēng)奪的焦點(diǎn)。大數(shù)據(jù)如此重要,但大數(shù)據(jù)人才卻十分短缺,據(jù)統(tǒng)計(jì),截至2018年美國(guó)大數(shù)據(jù)分析人才缺口是19萬人,中國(guó)作為全球第二大經(jīng)濟(jì)體,擁有的數(shù)據(jù)占全球總量的13%,增長(zhǎng)速度保持在50%左右,明顯高于全球的增長(zhǎng)速度。如此巨大的市場(chǎng),大數(shù)據(jù)處理技術(shù)人才必將供不應(yīng)求,未來幾年我國(guó)將需要十幾萬大數(shù)據(jù)相關(guān)人才。
大數(shù)據(jù)平臺(tái)搭建與配置管理課程是大數(shù)據(jù)技術(shù)與應(yīng)用專業(yè)的必修核心課程,基于能力本位教育理念設(shè)計(jì),以學(xué)生為中心,強(qiáng)調(diào)參與式、互動(dòng)式的主動(dòng)學(xué)習(xí)過程。本書基于學(xué)生能力的發(fā)展,旨在培養(yǎng)學(xué)生深入認(rèn)識(shí)和使用Hadoop平臺(tái),掌握Hadoop大數(shù)據(jù)平臺(tái)的搭建與配置管理,并利用Hadoop知識(shí)處理和解決實(shí)際問題。
本教材的參考學(xué)時(shí)為114學(xué)時(shí),建議采用理論實(shí)踐一體化教學(xué)模式,各項(xiàng)目的參考學(xué)時(shí)見表1。
表1 學(xué)時(shí)分配表
單元 學(xué)時(shí)
單元1 Hadoop安裝與配置 12
單元2 分布式文件系統(tǒng)HDFS 18
單元3 分布式編程框架MapReduce 24
單元4 分布式服務(wù)框架Zookeeper 12
單元5 數(shù)據(jù)倉(cāng)庫(kù)Hive 18
單元6 分布式數(shù)據(jù)庫(kù)HBase 18
單元7 流式數(shù)據(jù)處理框架Storm 12
課時(shí)總計(jì) 114
本書由鄧建萍任主編,并負(fù)責(zé)編寫單元1~單元4;周鋒任副主編,并負(fù)責(zé)編寫單元5、單元6;蔡斐負(fù)責(zé)編寫單元7和教材中所有代碼部分的檢查測(cè)試工作。
本書配套的資源包、運(yùn)行腳本、電子教案等可登錄http://www1daoyuncom下載。
大數(shù)據(jù)技術(shù)發(fā)展日新月異,筆者在撰寫本書過程中,參考了大量國(guó)內(nèi)外的教材、博客、專著、論文和資料,對(duì)大數(shù)據(jù)知識(shí)進(jìn)行了系統(tǒng)的梳理,但限于時(shí)間和水平,書中疏漏和不足之處在所難免,殷切希望廣大讀者批評(pí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簡(jiǎn)介20
任務(wù)1.3 安裝Java28
1 Java簡(jiǎn)介28
2 Java與Hadoop的關(guān)系34
任務(wù)1.4 安裝Hadoop單節(jié)點(diǎn)和集群37
1 Hadoop簡(jiǎn)介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)簡(jiǎn)介47
2 HDFS設(shè)計(jì)原則49
3 HDFS核心概念51
4 HDFS的HA方案53
任務(wù)2.2 使用Java操作HDFS58
1 HDFS簡(jiǎn)介59
2 HDFS讀數(shù)據(jù)流程59
3 HDFS寫數(shù)據(jù)流程61
小結(jié)69
習(xí)題69
單元3 分布式編程框架MapReduce70
任務(wù)3.1 講解WordCount實(shí)例70
1 MapReduce概述70
2 MapReduce計(jì)算架構(gòu)73
任務(wù)3.2 分析MapReduce實(shí)例應(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ù)倉(cāng)庫(kù)Hive119
任務(wù)5.1 安裝與配置Hive119
1 Hive基礎(chǔ)知識(shí)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è)計(jì)137
小結(jié)146
習(xí)題146
單元6 分布式數(shù)據(jù)庫(kù)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文件存儲(chǔ)與讀寫166
任務(wù)6.3 調(diào)用HBase的Java API175
1 HBase Schema設(shè)計(jì)規(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的擴(kuò)展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
參考文獻(xiàn)218