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