本書從Hadoop的原理和使用出發(fā),在重點(diǎn)介紹Hadoop生態(tài)系統(tǒng)的重要組件HDFS、MapReduce、YARN、Hive和Spark的同時(shí),注重大數(shù)據(jù)分析能力的全面提高。本書共分13章,主要內(nèi)容包括Hadoop簡(jiǎn)介、HDFS文件系統(tǒng)、YARN資源管理、MapReduce計(jì)算框架、Hive簡(jiǎn)介、Hive數(shù)據(jù)定義、Hive數(shù)據(jù)操作、Hive數(shù)據(jù)查詢、Spark簡(jiǎn)介、Spark大數(shù)據(jù)處理、Spark機(jī)器學(xué)習(xí)流程、Spark有監(jiān)督學(xué)習(xí)模型和Spark無監(jiān)督學(xué)習(xí)模型。本書內(nèi)容豐富、體系新穎、結(jié)構(gòu)合理、文字精練,適合作為普通高等院校信息類專業(yè)Hadoop大數(shù)據(jù)分析課程的教材,也可以作為數(shù)據(jù)科學(xué)行業(yè)相關(guān)從業(yè)人員的自學(xué)教材。
教材從Hadoop的基本理論,基礎(chǔ)教程、高級(jí)工具以及進(jìn)階教程來對(duì)相關(guān)理論的理論與技術(shù)進(jìn)行深入分析與講解。并提供大量的案例從零開始教會(huì)讀者如何使用Hadoop進(jìn)行開發(fā)以及應(yīng)用。
隨著信息技術(shù)的普及和應(yīng)用,各行各業(yè)產(chǎn)生了大量的數(shù)據(jù),人們持續(xù)不斷地探索處理這些數(shù)據(jù)的方法,以期大限度地從中挖掘有用信息。面對(duì)如潮水般不斷增加的數(shù)據(jù),人們不再滿足于數(shù)據(jù)的查詢和統(tǒng)計(jì)分析,而是期望從數(shù)據(jù)中提取信息或者知識(shí)為決策服務(wù)。數(shù)據(jù)挖掘技術(shù)突破數(shù)據(jù)分析技術(shù)的種種局限,結(jié)合統(tǒng)計(jì)學(xué)、數(shù)據(jù)庫、機(jī)器學(xué)習(xí)等技術(shù)解決從數(shù)據(jù)中發(fā)現(xiàn)新的信息并輔助決策這一難題,是正在飛速發(fā)展的前沿學(xué)科。近年來,隨著教育部新工科建設(shè)的不斷推進(jìn),大數(shù)據(jù)技術(shù)受到廣泛關(guān)注。數(shù)據(jù)挖掘作為大數(shù)據(jù)技術(shù)的重要實(shí)現(xiàn)手段,能夠挖掘數(shù)據(jù)的關(guān)聯(lián)規(guī)則,實(shí)現(xiàn)數(shù)據(jù)的分類、聚類、異常檢測(cè)和時(shí)間序列分析等,解決商務(wù)管理、生產(chǎn)控制、市場(chǎng)分析、工程設(shè)計(jì)和科學(xué)探索等各行各業(yè)中的數(shù)據(jù)分析與信息挖掘問題。
Hadoop是一系列分布式存儲(chǔ)和計(jì)算軟件,由Doug
Cutting創(chuàng)建,能夠支持互聯(lián)網(wǎng)數(shù)據(jù)量級(jí)別的系統(tǒng)。狹義的Hadoop項(xiàng)目?jī)H包含Hadoop Common、HDFS、YARN和MapReduce 4個(gè)組件。廣義的Hadoop項(xiàng)目還包含了其他一些衍生性的項(xiàng)目組件,它們或多或少依賴以上4個(gè)核心組件,如數(shù)據(jù)存儲(chǔ)依賴于HDFS、作業(yè)調(diào)度和資源管理依賴YARN,同時(shí)它們還解決了一些特定領(lǐng)域的問題。常用的包括Spark、HBase、Hive、Sqoop、Oozie、Impala、Hue、Pig等。
截至2019年1月,共有283所高校獲批數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)專業(yè),其中985及211高校占比13%。目前國內(nèi)大數(shù)據(jù)人才缺口更是達(dá)到百萬級(jí)。由于其開源性、易用性和強(qiáng)大的數(shù)據(jù)分析能力,Hadoop已成為世界范圍內(nèi)應(yīng)用廣泛的數(shù)據(jù)科學(xué)工具和語言之一。目前,Hadoop大數(shù)據(jù)分析與挖掘逐漸成為高校信息類專業(yè)的必修課,同時(shí),作為面向各專業(yè)的通識(shí)課也廣受歡迎。
本書作為立足于應(yīng)用型本科數(shù)據(jù)科學(xué)與大數(shù)據(jù)教學(xué)的Hadoop核心課教材,具有如下特色:
(1)內(nèi)容安排合理且全面,從Hadoop的安裝配置、分布式數(shù)據(jù)處理、分布式數(shù)據(jù)倉庫到分布式機(jī)器學(xué)習(xí),循序漸進(jìn),深入淺出。
(2)難度適中,適用于本科中高年級(jí)的核心課教材,僅需掌握Python基本編程和Linux基本操作就可以學(xué)習(xí)本書,對(duì)Java編程及數(shù)學(xué)和算法知識(shí)不作為必要基礎(chǔ)。
(3)理論與案例相結(jié)合,理論與實(shí)踐相結(jié)合,包含了泰坦尼克號(hào)乘客生存分析、航班準(zhǔn)點(diǎn)數(shù)據(jù)處理、鳶尾花數(shù)據(jù)建模等實(shí)踐案例。
本書主要內(nèi)容分為以下3部分:
第1部分:Hadoop核心基礎(chǔ),包括第1~4章。第1章為Hadoop簡(jiǎn)介,包括Hadoop的相關(guān)背景、基本概念、安裝、配置和運(yùn)行等。第2章為HDFS文件系統(tǒng),包括HDFS架構(gòu)、文件庫和常用操作等。第3章為YARN資源管理,包括YARN架構(gòu)、調(diào)度策略和常用操作等。第4章為MapReduce計(jì)算框架,包括各MapReduce原理、流程、詞頻統(tǒng)計(jì)和數(shù)據(jù)連接的實(shí)現(xiàn)等。
第2部分:Hive數(shù)據(jù)倉庫,包括第5~8章。第5章為Hive簡(jiǎn)介,包括Hive的相關(guān)背景、基本概念、安裝、配置和運(yùn)行等。第6章為Hive數(shù)據(jù)定義,包括數(shù)據(jù)庫操作、數(shù)據(jù)表操作、數(shù)據(jù)格式、外部表和分區(qū)表等。第7章為數(shù)據(jù)操作,包括數(shù)據(jù)導(dǎo)入、數(shù)據(jù)插入和數(shù)據(jù)導(dǎo)出等。第8章為Hive數(shù)據(jù)查詢,包括基本查詢、數(shù)據(jù)聚合和數(shù)據(jù)連接等。
第3部分:Spark數(shù)據(jù)分析,包括第9~13章。第9章為Spark簡(jiǎn)介,包括Spark的相關(guān)背景、基本概念、安裝、配置和運(yùn)行等。第10章為Spark大數(shù)據(jù)處理,包括大數(shù)據(jù)的選擇、聚合、引用、篩選、連接和變形等。第11章為Spark機(jī)器學(xué)習(xí)流程,包括數(shù)據(jù)探索、劃分、填充、特征選擇、建模調(diào)優(yōu)和測(cè)試評(píng)估等。第12章為Spark有監(jiān)督學(xué)習(xí)模型,包括線性、決策樹、隨機(jī)森林、神經(jīng)網(wǎng)絡(luò)和協(xié)同過濾等。第13章為Spark無監(jiān)督學(xué)習(xí)模型,包括k均值聚類、主成分分析和關(guān)聯(lián)分析模型等。
本書例子中的所有數(shù)據(jù)都可在GitHub上公開下載,地址為https://github.com/ yepdata/hadoop_textbook。
本書由高永彬、錢亮宏和方志軍編著。具體分工如下:高永彬編寫第1~4章;方志軍編寫第5~8章,錢亮宏編寫第9~13章。全書由范磊和許華根主審。同時(shí)感謝戴仁月、嚴(yán)娟和劉敏對(duì)本書的貢獻(xiàn)。
由于編者水平有限,加之時(shí)間倉促,書中難免存在疏漏和不足之處,敬請(qǐng)老師和同學(xué)批評(píng)指正。
編 者
2019年5月
高永彬:博士、講師,就職于上海工程技術(shù)大學(xué),博士畢業(yè)于韓國全北國立大學(xué),在模式識(shí)別、機(jī)器學(xué)習(xí)領(lǐng)域積累了大量的研究與實(shí)戰(zhàn)經(jīng)驗(yàn)。特別地,在基于深度學(xué)習(xí)技術(shù)的人臉識(shí)別以及車型檢測(cè)技術(shù)進(jìn)行了深入地研究,發(fā)表了近30篇期刊/會(huì)議論文,取得了豐厚的研究成果,發(fā)表在包括Information Sciences, Pattern Recognition Letters等高水平期刊中,其中SCI收錄5篇,EI收錄4篇。錢亮宏,男,畢業(yè)于上海交通大學(xué)電子信息與電氣工程學(xué)院,1989年8月出生,擁有10年R語言使用經(jīng)驗(yàn),一直奮戰(zhàn)在數(shù)據(jù)分析與挖掘領(lǐng)域的第一線,作為金融和互聯(lián)網(wǎng)行業(yè)資深數(shù)據(jù)挖掘?qū)<。方志軍,男,教授,現(xiàn)任上海工程技術(shù)大學(xué)電子電氣工程學(xué)院院長,1971年9月出生,主要從事人工智能、機(jī)器視覺、大數(shù)據(jù)分析等方面的研究,主講課程包括數(shù)字圖像處理、機(jī)器視覺、計(jì)算機(jī)導(dǎo)論、大數(shù)據(jù)導(dǎo)論和程序設(shè)計(jì)等。
第1部分 Hadoop核心基礎(chǔ)
第1章 Hadoop簡(jiǎn)介 2
1.1
Hadoop產(chǎn)生背景 2
1.2
Hadoop簡(jiǎn)要?dú)v史 3
1.3
Hadoop生態(tài)系統(tǒng)組件 3
1.4
Hadoop版本和商用支持 5
1.5
Hadoop的基礎(chǔ)環(huán)境配置 6
1.6
Hadoop的安裝 7
1.7
Hadoop的配置 11
1.8
Hadoop的運(yùn)行 14
小結(jié) 19
習(xí)題 19
第2章 HDFS文件系統(tǒng) 20
2.1
HDFS簡(jiǎn)介 20
2.2
HDFS架構(gòu) 20
2.3
HDFS文件塊 21
2.4
HDFS常用操作 22
小結(jié) 24
習(xí)題 24
第3章 YARN資源管理 25
3.1
YARN架構(gòu) 25
3.2
YARN調(diào)度策略 26
3.3
YARN常用操作 28
小結(jié) 30
習(xí)題 31
第4章 MapReduce計(jì)算框架 32
4.1
MapReduce原理 32
4.2
MapReduce作業(yè)數(shù)據(jù)流 33
4.3
Hadoop流處理 35
4.4
MapReduce程序?qū)崿F(xiàn)詞頻
統(tǒng)計(jì) 35
4.5
MapReduce程序的Reducer
數(shù)量 40
4.6
MapReduce程序的Combiner 41
4.7
MapReduce程序?qū)崿F(xiàn)數(shù)據(jù)
連接 43
小結(jié) 49
習(xí)題 49
第2部分 Hive數(shù)據(jù)倉庫
第5章 Hive簡(jiǎn)介 52
5.1
Hive概述 52
5.2
Hive的安裝 53
5.3
Hive的運(yùn)行 56
小結(jié) 59
習(xí)題 59
第6章 Hive數(shù)據(jù)定義 60
6.1 數(shù)據(jù)庫操作 60
6.2 數(shù)據(jù)表基本操作 62
6.3 存儲(chǔ)格式和行格式 65
6.4 數(shù)據(jù)類型 67
6.5 外部表 70
6.6 分區(qū)表 72
小結(jié) 74
習(xí)題 74
第7章 Hive數(shù)據(jù)操作 75
7.1 數(shù)據(jù)導(dǎo)入 75
7.2 數(shù)據(jù)插入 78
7.3 數(shù)據(jù)導(dǎo)出 82
小結(jié) 84
習(xí)題 84
第8章 Hive數(shù)據(jù)查詢 85
8.1 基本查詢 85
8.2 數(shù)據(jù)聚合 87
8.3 數(shù)據(jù)連接 90
小結(jié) 92
習(xí)題 93
第3部分 Spark數(shù)據(jù)分析
第9章 Spark簡(jiǎn)介 96
9.1
Spark概述 96
9.2
Spark原理 97
9.3
Spark的安裝 98
9.4
Spark運(yùn)行方式 99
9.5
Spark運(yùn)行位置 101
9.6
Spark運(yùn)行參數(shù) 104
小結(jié) 104
習(xí)題 104
第10章 Spark大數(shù)據(jù)處理 105
10.1
數(shù)據(jù)框的創(chuàng)建 105
10.2
數(shù)據(jù)框的選擇 107
10.3
數(shù)據(jù)框的運(yùn)算和聚合 110
10.4
數(shù)據(jù)框的增加、刪除
和修改 114
10.5
數(shù)據(jù)框的連接 116
10.6
數(shù)據(jù)框的變形 119
小結(jié) 120
習(xí)題 120
第11章 Spark機(jī)器學(xué)習(xí)流程 121
11.1
數(shù)據(jù)探索 122
11.2
數(shù)據(jù)劃分 123
11.3
數(shù)據(jù)填充 124
11.4
類別變量處理 125
11.5
特征選擇 128
11.6
建模與調(diào)優(yōu) 131
11.7
測(cè)試與評(píng)估 133
小結(jié) 135
習(xí)題 135
第12章 Spark有監(jiān)督學(xué)習(xí)模型 136
12.1
線性回歸模型 140
12.2
邏輯回歸模型 142
12.3
決策樹模型 145
12.4
隨機(jī)森林模型 152
12.5
神經(jīng)網(wǎng)絡(luò) 158
12.6
協(xié)同過濾 163
小結(jié) 166
習(xí)題 166
第13章 Spark無監(jiān)督學(xué)習(xí)模型 167
13.1
k均值聚類模型 168
13.2
主成分分析模型 172
13.3
關(guān)聯(lián)分析模型 173
小結(jié) 176
習(xí)題 176