這是一本適合教學(xué)和零基礎(chǔ)自學(xué)的Hadoop與大數(shù)據(jù)挖掘的教程,即便你完全沒有Hadoop編程基礎(chǔ)和大數(shù)據(jù)挖掘基礎(chǔ),根據(jù)本書中的理論知識和上機實踐,也能迅速掌握如何使用Hadoop進行大數(shù)據(jù)挖掘。全書主要分為兩篇:基礎(chǔ)篇(1-7章),首先從宏觀上介紹了大數(shù)據(jù)相關(guān)概念和技術(shù),然后逐一對Hadoop、Hive、HBase、Pig、Spark、Oozie等一系列大數(shù)據(jù)技術(shù)的概念、原理、架構(gòu),以及企業(yè)應(yīng)用方法進行了詳細介紹,同時配有大量的案例。掌握了這些內(nèi)容,就具備了大數(shù)據(jù)技術(shù)的基礎(chǔ);挖掘?qū)崙?zhàn)篇(第8章),主要是一個企業(yè)級大數(shù)據(jù)應(yīng)用項目——電子商務(wù)智能推薦系統(tǒng)。通過分析應(yīng)用背景、構(gòu)建系統(tǒng),使讀者了解針對系統(tǒng)的每一層應(yīng)用使用什么大數(shù)據(jù)技術(shù)來解決問題。涉及的流程有數(shù)據(jù)采集、數(shù)據(jù)預(yù)處理、模型構(gòu)建等,在每一個流程中會進行大數(shù)據(jù)相關(guān)技術(shù)實踐,運用實際數(shù)據(jù)來進行分析,使讀者切身感受到利用大數(shù)據(jù)技術(shù)解決問題的魅力。
為什么要寫這本書最早提出“大數(shù)據(jù)”時代到來的是全球知名咨詢公司麥肯錫,麥肯錫稱:“數(shù)據(jù),已經(jīng)滲透到當今每一個行業(yè)和業(yè)務(wù)職能領(lǐng)域,成為重要的生產(chǎn)因素。人們對于海量數(shù)據(jù)的挖掘和運用,預(yù)示著新一波生產(chǎn)率增長和消費者盈余浪潮的到來!
早在2012年,大數(shù)據(jù)(bigdata)一詞已經(jīng)被廣泛提起,人們用它來描述和定義信息爆炸時代產(chǎn)生的海量數(shù)據(jù),并命名與之相關(guān)的技術(shù)發(fā)展與創(chuàng)新。那時就有人預(yù)計,從2013年至2020年,全球數(shù)據(jù)規(guī)模將增長10倍,每年產(chǎn)生的數(shù)據(jù)量將由當時的4.4萬億GB,增長至44萬億GB,每兩年翻一番。
既然“大數(shù)據(jù)”浪潮已經(jīng)來臨,那么與之對應(yīng)的大數(shù)據(jù)人才呢?在國外,大數(shù)據(jù)技術(shù)發(fā)展正如火如荼,各種方便大家學(xué)習(xí)的資料、教程應(yīng)有盡有。但是,在國內(nèi),這種資料卻是有“門檻”的。其一,這類資料是英文的,對于部分人員來說,閱讀是有難度的;其二,這些資料對于初學(xué)者或在校生來說,在理論理解上也有一些難度,沒有充分的動手實踐來協(xié)助理解大數(shù)據(jù)相關(guān)技術(shù)的原理、架構(gòu)等;其三,在如何應(yīng)用大數(shù)據(jù)技術(shù)來解決企業(yè)實實在在遇到的大數(shù)據(jù)相關(guān)問題方面,沒有很好的資料;其四,對于企業(yè)用戶來說,如何將大數(shù)據(jù)技術(shù)和數(shù)據(jù)挖掘技術(shù)相結(jié)合,對企業(yè)大量數(shù)據(jù)進行挖掘,以挖掘出有價值的信息,也是難點。
作為大數(shù)據(jù)相關(guān)技術(shù),Hadoop無疑應(yīng)用很廣泛。Hadoop具有以下優(yōu)勢:高可靠性、高擴展性、高效性、高容錯性、低成本、生態(tài)系統(tǒng)完善。
一般來說,使用Hadoop相關(guān)技術(shù)可以解決企業(yè)相關(guān)大數(shù)據(jù)應(yīng)用,特別是結(jié)合諸如Mahout、SparkMLlib等技術(shù),不僅可以對企業(yè)相關(guān)大數(shù)據(jù)進行基礎(chǔ)分析,還能構(gòu)建挖掘模型,挖掘企業(yè)大數(shù)據(jù)中有價值的信息。
對于學(xué)習(xí)大數(shù)據(jù)相關(guān)技術(shù)的高校師生來說,本書不僅提供了大數(shù)據(jù)相關(guān)技術(shù)的基礎(chǔ)講解及原理、架構(gòu)分析,還針對這些原理,配備有對應(yīng)的動手實踐章節(jié),幫助讀者加深對原理、架構(gòu)的認識。同時,在每個模塊結(jié)束后,書中會有一個相對獨立的企業(yè)應(yīng)用案例,幫助讀者鞏固學(xué)到的大數(shù)據(jù)技術(shù)相關(guān)知識。
對于企業(yè)用戶或大數(shù)據(jù)挖掘開發(fā)者來說,特別是對想要了解如何將大數(shù)據(jù)技術(shù)應(yīng)用到企業(yè)大數(shù)據(jù)項目中的企業(yè)用戶或者開發(fā)者來說,本書也是一份優(yōu)秀的參考資料。
本書特色本書提供了大數(shù)據(jù)相關(guān)技術(shù)的簡介、原理、實踐、企業(yè)應(yīng)用等,針對大數(shù)據(jù)相關(guān)技術(shù),如Hadoop、HBase、Hive、Spark等,都有專業(yè)章節(jié)進行介紹,并且針對每一模塊都有相應(yīng)的動手實踐,能有效加深讀者對大數(shù)據(jù)相關(guān)技術(shù)原理、技術(shù)實踐的理解。書中的挖掘?qū)嵺`篇涉及企業(yè)在大數(shù)據(jù)應(yīng)用中的所有環(huán)節(jié),如數(shù)據(jù)采集、數(shù)據(jù)預(yù)處理、數(shù)據(jù)挖掘等,通過案例對整個系統(tǒng)的架構(gòu)進行了詳細分析,對讀者有一定實踐指導(dǎo)作用。
讀者可以從“泰迪杯”全國大學(xué)生數(shù)據(jù)挖掘挑戰(zhàn)賽網(wǎng)站(http://www.tipdm.org/tj/865.jhtml)免費下載本書配套的全部數(shù)據(jù)文件及源程序。另外,為方便教師授課,本書還特意提供了建模階段的過程數(shù)據(jù)文件、PPT課件,有需要的教師可通過熱線電話(40068-40020)、企業(yè)QQ(40068-40020)或以下微信公眾號咨詢獲取。
本書適用對象開設(shè)大數(shù)據(jù)、大數(shù)據(jù)挖掘相關(guān)課程的高校教師和學(xué)生目前國內(nèi)不少高校將大數(shù)據(jù)、大數(shù)據(jù)挖掘引入本科教學(xué)中,在計算機、數(shù)學(xué)、自動化、電子信息、金融等專業(yè)開設(shè)了大數(shù)據(jù)技術(shù)相關(guān)的課程,但目前針對這一課程的相關(guān)教材沒有統(tǒng)一,或者使用的教材不利于課堂教學(xué)。本書提供了大數(shù)據(jù)相關(guān)技術(shù)的簡介、原理、實踐、企業(yè)應(yīng)用等,能有效幫助高校教師教學(xué);幫助學(xué)生學(xué)習(xí)大數(shù)據(jù)相關(guān)技術(shù)原理,進行技術(shù)實踐,為以后工作打下良好基礎(chǔ)。
大數(shù)據(jù)開發(fā)人員書中針對大數(shù)據(jù)相關(guān)技術(shù),如Hadoop、HBase、Hive、Spark等,都有專業(yè)章節(jié)進行介紹,并且針對每一模塊有相應(yīng)的動手實踐,對初級開發(fā)人員有較強指導(dǎo)作用。
大數(shù)據(jù)架構(gòu)師挖掘?qū)嵺`篇涉及企業(yè)在大數(shù)據(jù)應(yīng)用中的所有環(huán)節(jié),包括數(shù)據(jù)采集、數(shù)據(jù)預(yù)處理、數(shù)據(jù)挖掘等方面,通過案例對整個系統(tǒng)的架構(gòu)進行了詳細分析,對大數(shù)據(jù)架構(gòu)師有一定的實踐指導(dǎo)作用。
關(guān)注大數(shù)據(jù)挖掘技術(shù)的人員本書不僅包括大數(shù)據(jù)相關(guān)技術(shù)的簡介及原理分析,還包括大數(shù)據(jù)相關(guān)技術(shù)和大數(shù)據(jù)挖掘相結(jié)合的案例分析。對于大數(shù)據(jù)挖掘技術(shù)人員來說,如何應(yīng)用大數(shù)據(jù)技術(shù)來對大數(shù)據(jù)進行挖掘是重點和難點,通過學(xué)習(xí)本書中案例的分析方法,可以將其融入自己的實際工作中。
如何閱讀本書本書主要分為兩篇:基礎(chǔ)篇和挖掘?qū)崙?zhàn)篇。基礎(chǔ)篇介紹了大數(shù)據(jù)相關(guān)技術(shù):Hadoop、Hive、HBase、Pig、Spark、Oozie等。針對每個技術(shù)都有相應(yīng)模塊與之對應(yīng),首先對該技術(shù)的概念、內(nèi)部原理等進行介紹,使讀者對該技術(shù)有一個由淺入深的理解;其次在對原理的介紹中會配合相應(yīng)的動手實踐,加深對原理的理解。在每個模塊的最后,會有1~2個企業(yè)案例,主要講解使用當前模塊的技術(shù)來解決其中的1~2個問題,這樣讀者不僅對技術(shù)的原理、架構(gòu)有了較深入的了解,同時,對于如何應(yīng)用該技術(shù)也有了一定認識,從而為以后的工作、學(xué)習(xí)打下良好基礎(chǔ)。挖掘?qū)崙?zhàn)篇通過對一個大型的企業(yè)應(yīng)用案例的介紹,充分應(yīng)用基礎(chǔ)篇講解的大數(shù)據(jù)技術(shù)來解決企業(yè)應(yīng)用中遇到的各
Contents 目錄
前言
第一篇 基礎(chǔ)篇
第1章 淺談大數(shù)據(jù)2
1.1 大數(shù)據(jù)概述3
1.2 大數(shù)據(jù)平臺4
1.3 本章小結(jié)5
第2章 大數(shù)據(jù)存儲與運算利器—Hadoop6
2.1 Hadoop概述6
2.1.1 Hadoop簡介6
2.1.2 Hadoop存儲—HDFS8
2.1.3 Hadoop計算—MapReduce11
2.1.4 Hadoop資源管理—YARN13
2.1.5 Hadoop生態(tài)系統(tǒng)14
2.2 Hadoop配置及IDE配置17
2.2.1 準備工作17
2.2.2 環(huán)境配置18
2.2.3 集群啟動關(guān)閉與監(jiān)控24
2.2.4 動手實踐:一鍵式Hadoop集群啟動關(guān)閉25
2.2.5 動手實踐:Hadoop IDE配置26
2.3 Hadoop集群命令28
2.3.1 HDFS常用命令hdfs dfs30
2.3.2 動手實踐:hdfs dfs命令實戰(zhàn)31
2.3.3 MapReduce常用命令mapred job32
2.3.4 YARN常用命令yarn jar32
2.3.5 動手實踐:運行MapReduce任務(wù)33
2.4 Hadoop編程開發(fā)33
2.4.1 HDFS Java API操作33
2.4.2 MapReduce原理35
2.4.3 動手實踐:編寫Word Count程序并打包運行44
2.4.4 MapReduce組件分析與編程實踐46
2.5 K-Means算法原理及HadoopMapReduce實現(xiàn)53
2.5.1 K-Means算法原理53
2.5.2 動手實踐:K-Means算法實現(xiàn)55
2.5.3 Hadoop K-Means算法實現(xiàn)思路55
2.5.4 Hadoop K-Means編程實現(xiàn)57
2.6 TF-IDF算法原理及HadoopMapReduce實現(xiàn)67
2.6.1 TF-IDF算法原理67
2.6.2 Hadoop TF-IDF編程思路67
2.6.3 Hadoop TF-IDF編程實現(xiàn)68
2.7 本章小結(jié)79
第3章 大數(shù)據(jù)查詢—Hive81
3.1 Hive概述81
3.1.1 Hive體系架構(gòu)82
3.1.2 Hive數(shù)據(jù)類型86
3.1.3 Hive安裝87
3.1.4 動手實踐:Hive安裝配置91
3.1.5 動手實踐:HiveQL基礎(chǔ)—SQL91
3.2 HiveQL語句93
3.2.1 數(shù)據(jù)庫操作94
3.2.2 Hive表定義94
3.2.3 數(shù)據(jù)導(dǎo)入100
3.2.4 數(shù)據(jù)導(dǎo)出103
3.2.5 HiveQL查詢104
3.3 動手實踐:基于Hive的學(xué)生信息查詢108
3.4 基于Hive的航空公司客戶價值數(shù)據(jù)預(yù)處理及分析109
3.4.1 背景與挖掘目標109
3.4.2 分析方法與過程111
3.5 本章小結(jié)115
第4章 大數(shù)據(jù)快速讀寫—HBase116
4.1 HBase概述116
4.2 配置HBase集群118
4.2.1 Zookeeper簡介及配置118
4.2.2 配置HBase121
4.2.3 動手實踐:HBase安裝及運行122
4.2.4 動手實踐:ZooKeeper獲取HBase狀態(tài)122
4.3 HBase原理與架構(gòu)組件123
4.3.1 HBase架構(gòu)與組件123
4.3.2 HBase數(shù)據(jù)模型127
4.3.3 讀取/寫入HBase數(shù)據(jù)128
4.3.4 RowKey設(shè)計原則129
4.3.5 動手實踐:HBase數(shù)據(jù)模型驗證131
4.4 HBase Shell操作132
4.4.1 HBase常用Shell命令132
4.4.2 動手實踐:HBase Shell操作136
4.5 Java API &MapReduce與HBase交互137
4.5.1 搭建HBase開發(fā)環(huán)境137
4.5.2 使用Java API操作HBase表144
4.5.3 動手實踐:HBase Java API使用147
4.5.4 MapReduce與HBase交互147
4.5.5 動手實踐:HBase表導(dǎo)入導(dǎo)出150
4.6 基于HBase的冠字號查詢系統(tǒng)151
4.6.1 案例背景151
4.6.2 功能指標151
4.6.3 系統(tǒng)設(shè)計152
4.6.4 動手實踐:構(gòu)建基于HBase的冠字號查詢系統(tǒng)162
4.7 本章小結(jié)175
第5章 大數(shù)據(jù)處理—Pig176
5.1 Pig概述176
5.1.1 Pig Latin簡介177
5.1.2 Pig數(shù)據(jù)類型179
5.1.3 Pig與Hive比較179
5.2 配置運行Pig180
5.2.1 Pig配置181
5.2.2 Pig運行模式181
5.3 常用Pig Latin操作182
5.3.1 數(shù)據(jù)加載182
5.3.2 數(shù)據(jù)存儲184
5.3.3 Pig參數(shù)替換185
5.3.4 數(shù)據(jù)轉(zhuǎn)換186
5.4 綜合實踐194
5.4.1 動手實踐:訪問統(tǒng)計信息數(shù)據(jù)處理194
5.4.2 動手實踐:股票交易數(shù)據(jù)處理195
5.5 本章小結(jié)196
第6章 大數(shù)據(jù)快速運算與挖掘—Spark197
6.1 Spark概述197
6.2 Spark安裝集群199
6.2.1 3種運行模式199
6.2.2 動手實踐:配置Spark獨立集群199
6.2.3 3種運行模式實例201
6.2.4 動手實踐:Spark Streaming實時日志統(tǒng)計205
6.2.5 動手實踐:Spark開發(fā)環(huán)境—Intellij IDEA配置207
6.3 Spark架構(gòu)與核心原理212
6.3.1 Spark架構(gòu)212
6.3.2 RDD原理213
6.3.3 深入理解Spark核心原理215
6.4 Spark編程技巧218
6.4.1 Scala基礎(chǔ)218
6.4.2 Spark基礎(chǔ)編程218
6.5 如何學(xué)習(xí)Spark MLlib225
6.5.1 確定應(yīng)用227
6.5.2 ALS算法直觀描述228
6.5.3 編程實現(xiàn)229
6.5.4 問題解決及模型調(diào)優(yōu)233
6.6 動手實踐:基于Spark ALS電影推薦系統(tǒng)234
6.6.1 動手實踐:生成算法包235
6.6.2 動手實踐:完善推薦系統(tǒng)239
6.7 本章小結(jié)250
第7章 大數(shù)據(jù)工作流—Oozie252
7.1 Oozie簡介252
7.2 編譯配置并運行Oozie253
7.2.1 動手實踐:編譯Oozie253
7.2.2 動手實踐:Oozie Server/client配置254
7.3 Oozie WorkFlow實踐257
7.3.1 定義及提交工作流257
7.3.2 動手實踐:MapReduce Work-Flow定義及調(diào)度260
7.3.3 動手實踐:Pig WorkFlow定義及調(diào)度263
7.3.4 動手實踐:Hive WorkFlow定義及調(diào)度265
7.3.5 動手實踐:Spark WorkFlow定義及調(diào)度267
7.3.6 動手實踐:Spark On Yarn定義及調(diào)度268
7.4 Oozie Coordinator實踐270
7.4.1 動手實踐:基于時間調(diào)度270
7.4