這是一本適合教學和零基礎自學的Hadoop與大數(shù)據(jù)挖掘的教程,即便你完全沒有Hadoop編程基礎和大數(shù)據(jù)挖掘基礎,根據(jù)本書中的理論知識和上機實踐,也能迅速掌握如何使用Hadoop進行大數(shù)據(jù)挖掘。全書主要分為兩篇:基礎篇(1-7章),首先從宏觀上介紹了大數(shù)據(jù)相關概念和技術,然后逐一對Hadoop、Hive、HBase、Pig、Spark、Oozie等一系列大數(shù)據(jù)技術的概念、原理、架構,以及企業(yè)應用方法進行了詳細介紹,同時配有大量的案例。掌握了這些內(nèi)容,就具備了大數(shù)據(jù)技術的基礎;挖掘?qū)崙?zhàn)篇(第8章),主要是一個企業(yè)級大數(shù)據(jù)應用項目——電子商務智能推薦系統(tǒng)。通過分析應用背景、構建系統(tǒng),使讀者了解針對系統(tǒng)的每一層應用使用什么大數(shù)據(jù)技術來解決問題。涉及的流程有數(shù)據(jù)采集、數(shù)據(jù)預處理、模型構建等,在每一個流程中會進行大數(shù)據(jù)相關技術實踐,運用實際數(shù)據(jù)來進行分析,使讀者切身感受到利用大數(shù)據(jù)技術解決問題的魅力。
為什么要寫這本書最早提出“大數(shù)據(jù)”時代到來的是全球知名咨詢公司麥肯錫,麥肯錫稱:“數(shù)據(jù),已經(jīng)滲透到當今每一個行業(yè)和業(yè)務職能領域,成為重要的生產(chǎn)因素。人們對于海量數(shù)據(jù)的挖掘和運用,預示著新一波生產(chǎn)率增長和消費者盈余浪潮的到來!
早在2012年,大數(shù)據(jù)(bigdata)一詞已經(jīng)被廣泛提起,人們用它來描述和定義信息爆炸時代產(chǎn)生的海量數(shù)據(jù),并命名與之相關的技術發(fā)展與創(chuàng)新。那時就有人預計,從2013年至2020年,全球數(shù)據(jù)規(guī)模將增長10倍,每年產(chǎn)生的數(shù)據(jù)量將由當時的4.4萬億GB,增長至44萬億GB,每兩年翻一番。
既然“大數(shù)據(jù)”浪潮已經(jīng)來臨,那么與之對應的大數(shù)據(jù)人才呢?在國外,大數(shù)據(jù)技術發(fā)展正如火如荼,各種方便大家學習的資料、教程應有盡有。但是,在國內(nèi),這種資料卻是有“門檻”的。其一,這類資料是英文的,對于部分人員來說,閱讀是有難度的;其二,這些資料對于初學者或在校生來說,在理論理解上也有一些難度,沒有充分的動手實踐來協(xié)助理解大數(shù)據(jù)相關技術的原理、架構等;其三,在如何應用大數(shù)據(jù)技術來解決企業(yè)實實在在遇到的大數(shù)據(jù)相關問題方面,沒有很好的資料;其四,對于企業(yè)用戶來說,如何將大數(shù)據(jù)技術和數(shù)據(jù)挖掘技術相結合,對企業(yè)大量數(shù)據(jù)進行挖掘,以挖掘出有價值的信息,也是難點。
作為大數(shù)據(jù)相關技術,Hadoop無疑應用很廣泛。Hadoop具有以下優(yōu)勢:高可靠性、高擴展性、高效性、高容錯性、低成本、生態(tài)系統(tǒng)完善。
一般來說,使用Hadoop相關技術可以解決企業(yè)相關大數(shù)據(jù)應用,特別是結合諸如Mahout、SparkMLlib等技術,不僅可以對企業(yè)相關大數(shù)據(jù)進行基礎分析,還能構建挖掘模型,挖掘企業(yè)大數(shù)據(jù)中有價值的信息。
對于學習大數(shù)據(jù)相關技術的高校師生來說,本書不僅提供了大數(shù)據(jù)相關技術的基礎講解及原理、架構分析,還針對這些原理,配備有對應的動手實踐章節(jié),幫助讀者加深對原理、架構的認識。同時,在每個模塊結束后,書中會有一個相對獨立的企業(yè)應用案例,幫助讀者鞏固學到的大數(shù)據(jù)技術相關知識。
對于企業(yè)用戶或大數(shù)據(jù)挖掘開發(fā)者來說,特別是對想要了解如何將大數(shù)據(jù)技術應用到企業(yè)大數(shù)據(jù)項目中的企業(yè)用戶或者開發(fā)者來說,本書也是一份優(yōu)秀的參考資料。
本書特色本書提供了大數(shù)據(jù)相關技術的簡介、原理、實踐、企業(yè)應用等,針對大數(shù)據(jù)相關技術,如Hadoop、HBase、Hive、Spark等,都有專業(yè)章節(jié)進行介紹,并且針對每一模塊都有相應的動手實踐,能有效加深讀者對大數(shù)據(jù)相關技術原理、技術實踐的理解。書中的挖掘?qū)嵺`篇涉及企業(yè)在大數(shù)據(jù)應用中的所有環(huán)節(jié),如數(shù)據(jù)采集、數(shù)據(jù)預處理、數(shù)據(jù)挖掘等,通過案例對整個系統(tǒng)的架構進行了詳細分析,對讀者有一定實踐指導作用。
讀者可以從“泰迪杯”全國大學生數(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ù)據(jù)、大數(shù)據(jù)挖掘相關課程的高校教師和學生目前國內(nèi)不少高校將大數(shù)據(jù)、大數(shù)據(jù)挖掘引入本科教學中,在計算機、數(shù)學、自動化、電子信息、金融等專業(yè)開設了大數(shù)據(jù)技術相關的課程,但目前針對這一課程的相關教材沒有統(tǒng)一,或者使用的教材不利于課堂教學。本書提供了大數(shù)據(jù)相關技術的簡介、原理、實踐、企業(yè)應用等,能有效幫助高校教師教學;幫助學生學習大數(shù)據(jù)相關技術原理,進行技術實踐,為以后工作打下良好基礎。
大數(shù)據(jù)開發(fā)人員書中針對大數(shù)據(jù)相關技術,如Hadoop、HBase、Hive、Spark等,都有專業(yè)章節(jié)進行介紹,并且針對每一模塊有相應的動手實踐,對初級開發(fā)人員有較強指導作用。
大數(shù)據(jù)架構師挖掘?qū)嵺`篇涉及企業(yè)在大數(shù)據(jù)應用中的所有環(huán)節(jié),包括數(shù)據(jù)采集、數(shù)據(jù)預處理、數(shù)據(jù)挖掘等方面,通過案例對整個系統(tǒng)的架構進行了詳細分析,對大數(shù)據(jù)架構師有一定的實踐指導作用。
關注大數(shù)據(jù)挖掘技術的人員本書不僅包括大數(shù)據(jù)相關技術的簡介及原理分析,還包括大數(shù)據(jù)相關技術和大數(shù)據(jù)挖掘相結合的案例分析。對于大數(shù)據(jù)挖掘技術人員來說,如何應用大數(shù)據(jù)技術來對大數(shù)據(jù)進行挖掘是重點和難點,通過學習本書中案例的分析方法,可以將其融入自己的實際工作中。
如何閱讀本書本書主要分為兩篇:基礎篇和挖掘?qū)崙?zhàn)篇。基礎篇介紹了大數(shù)據(jù)相關技術:Hadoop、Hive、HBase、Pig、Spark、Oozie等。針對每個技術都有相應模塊與之對應,首先對該技術的概念、內(nèi)部原理等進行介紹,使讀者對該技術有一個由淺入深的理解;其次在對原理的介紹中會配合相應的動手實踐,加深對原理的理解。在每個模塊的最后,會有1~2個企業(yè)案例,主要講解使用當前模塊的技術來解決其中的1~2個問題,這樣讀者不僅對技術的原理、架構有了較深入的了解,同時,對于如何應用該技術也有了一定認識,從而為以后的工作、學習打下良好基礎。挖掘?qū)崙?zhàn)篇通過對一個大型的企業(yè)應用案例的介紹,充分應用基礎篇講解的大數(shù)據(jù)技術來解決企業(yè)應用中遇到的各
Contents 目錄
前言
第一篇 基礎篇
第1章 淺談大數(shù)據(jù)2
1.1 大數(shù)據(jù)概述3
1.2 大數(shù)據(jù)平臺4
1.3 本章小結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 集群啟動關閉與監(jiān)控24
2.2.4 動手實踐:一鍵式Hadoop集群啟動關閉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任務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 本章小結79
第3章 大數(shù)據(jù)查詢—Hive81
3.1 Hive概述81
3.1.1 Hive體系架構82
3.1.2 Hive數(shù)據(jù)類型86
3.1.3 Hive安裝87
3.1.4 動手實踐:Hive安裝配置91
3.1.5 動手實踐:HiveQL基礎—SQL91
3.2 HiveQL語句93
3.2.1 數(shù)據(jù)庫操作94
3.2.2 Hive表定義94
3.2.3 數(shù)據(jù)導入100
3.2.4 數(shù)據(jù)導出103
3.2.5 HiveQL查詢104
3.3 動手實踐:基于Hive的學生信息查詢108
3.4 基于Hive的航空公司客戶價值數(shù)據(jù)預處理及分析109
3.4.1 背景與挖掘目標109
3.4.2 分析方法與過程111
3.5 本章小結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原理與架構組件123
4.3.1 HBase架構與組件123
4.3.2 HBase數(shù)據(jù)模型127
4.3.3 讀取/寫入HBase數(shù)據(jù)128
4.3.4 RowKey設計原則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表導入導出150
4.6 基于HBase的冠字號查詢系統(tǒng)151
4.6.1 案例背景151
4.6.2 功能指標151
4.6.3 系統(tǒng)設計152
4.6.4 動手實踐:構建基于HBase的冠字號查詢系統(tǒng)162
4.7 本章小結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 本章小結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架構與核心原理212
6.3.1 Spark架構212
6.3.2 RDD原理213
6.3.3 深入理解Spark核心原理215
6.4 Spark編程技巧218
6.4.1 Scala基礎218
6.4.2 Spark基礎編程218
6.5 如何學習Spark MLlib225
6.5.1 確定應用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 本章小結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