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