這是一本適合教學和零基礎自學的Hadoop與大數據挖掘的教程,即便你完全沒有Hadoop編程基礎和大數據挖掘基礎,根據本書中的理論知識和上機實踐,也能迅速掌握如何使用Hadoop進行大數據挖掘。全書主要分為兩篇:基礎篇(1-7章),首先從宏觀上介紹了大數據相關概念和技術,然后逐一對Hadoop、Hive、HBase、Pig、Spark、Oozie等一系列大數據技術的概念、原理、架構,以及企業(yè)應用方法進行了詳細介紹,同時配有大量的案例。掌握了這些內容,就具備了大數據技術的基礎;挖掘實戰(zhàn)篇(第8章),主要是一個企業(yè)級大數據應用項目——電子商務智能推薦系統。通過分析應用背景、構建系統,使讀者了解針對系統的每一層應用使用什么大數據技術來解決問題。涉及的流程有數據采集、數據預處理、模型構建等,在每一個流程中會進行大數據相關技術實踐,運用實際數據來進行分析,使讀者切身感受到利用大數據技術解決問題的魅力。
為什么要寫這本書最早提出“大數據”時代到來的是全球知名咨詢公司麥肯錫,麥肯錫稱:“數據,已經滲透到當今每一個行業(yè)和業(yè)務職能領域,成為重要的生產因素。人們對于海量數據的挖掘和運用,預示著新一波生產率增長和消費者盈余浪潮的到來!
早在2012年,大數據(bigdata)一詞已經被廣泛提起,人們用它來描述和定義信息爆炸時代產生的海量數據,并命名與之相關的技術發(fā)展與創(chuàng)新。那時就有人預計,從2013年至2020年,全球數據規(guī)模將增長10倍,每年產生的數據量將由當時的4.4萬億GB,增長至44萬億GB,每兩年翻一番。
既然“大數據”浪潮已經來臨,那么與之對應的大數據人才呢?在國外,大數據技術發(fā)展正如火如荼,各種方便大家學習的資料、教程應有盡有。但是,在國內,這種資料卻是有“門檻”的。其一,這類資料是英文的,對于部分人員來說,閱讀是有難度的;其二,這些資料對于初學者或在校生來說,在理論理解上也有一些難度,沒有充分的動手實踐來協助理解大數據相關技術的原理、架構等;其三,在如何應用大數據技術來解決企業(yè)實實在在遇到的大數據相關問題方面,沒有很好的資料;其四,對于企業(yè)用戶來說,如何將大數據技術和數據挖掘技術相結合,對企業(yè)大量數據進行挖掘,以挖掘出有價值的信息,也是難點。
作為大數據相關技術,Hadoop無疑應用很廣泛。Hadoop具有以下優(yōu)勢:高可靠性、高擴展性、高效性、高容錯性、低成本、生態(tài)系統完善。
一般來說,使用Hadoop相關技術可以解決企業(yè)相關大數據應用,特別是結合諸如Mahout、SparkMLlib等技術,不僅可以對企業(yè)相關大數據進行基礎分析,還能構建挖掘模型,挖掘企業(yè)大數據中有價值的信息。
對于學習大數據相關技術的高校師生來說,本書不僅提供了大數據相關技術的基礎講解及原理、架構分析,還針對這些原理,配備有對應的動手實踐章節(jié),幫助讀者加深對原理、架構的認識。同時,在每個模塊結束后,書中會有一個相對獨立的企業(yè)應用案例,幫助讀者鞏固學到的大數據技術相關知識。
對于企業(yè)用戶或大數據挖掘開發(fā)者來說,特別是對想要了解如何將大數據技術應用到企業(yè)大數據項目中的企業(yè)用戶或者開發(fā)者來說,本書也是一份優(yōu)秀的參考資料。
本書特色本書提供了大數據相關技術的簡介、原理、實踐、企業(yè)應用等,針對大數據相關技術,如Hadoop、HBase、Hive、Spark等,都有專業(yè)章節(jié)進行介紹,并且針對每一模塊都有相應的動手實踐,能有效加深讀者對大數據相關技術原理、技術實踐的理解。書中的挖掘實踐篇涉及企業(yè)在大數據應用中的所有環(huán)節(jié),如數據采集、數據預處理、數據挖掘等,通過案例對整個系統的架構進行了詳細分析,對讀者有一定實踐指導作用。
讀者可以從“泰迪杯”全國大學生數據挖掘挑戰(zhàn)賽網站(http://www.tipdm.org/tj/865.jhtml)免費下載本書配套的全部數據文件及源程序。另外,為方便教師授課,本書還特意提供了建模階段的過程數據文件、PPT課件,有需要的教師可通過熱線電話(40068-40020)、企業(yè)QQ(40068-40020)或以下微信公眾號咨詢獲取。
本書適用對象開設大數據、大數據挖掘相關課程的高校教師和學生目前國內不少高校將大數據、大數據挖掘引入本科教學中,在計算機、數學、自動化、電子信息、金融等專業(yè)開設了大數據技術相關的課程,但目前針對這一課程的相關教材沒有統一,或者使用的教材不利于課堂教學。本書提供了大數據相關技術的簡介、原理、實踐、企業(yè)應用等,能有效幫助高校教師教學;幫助學生學習大數據相關技術原理,進行技術實踐,為以后工作打下良好基礎。
大數據開發(fā)人員書中針對大數據相關技術,如Hadoop、HBase、Hive、Spark等,都有專業(yè)章節(jié)進行介紹,并且針對每一模塊有相應的動手實踐,對初級開發(fā)人員有較強指導作用。
大數據架構師挖掘實踐篇涉及企業(yè)在大數據應用中的所有環(huán)節(jié),包括數據采集、數據預處理、數據挖掘等方面,通過案例對整個系統的架構進行了詳細分析,對大數據架構師有一定的實踐指導作用。
關注大數據挖掘技術的人員本書不僅包括大數據相關技術的簡介及原理分析,還包括大數據相關技術和大數據挖掘相結合的案例分析。對于大數據挖掘技術人員來說,如何應用大數據技術來對大數據進行挖掘是重點和難點,通過學習本書中案例的分析方法,可以將其融入自己的實際工作中。
如何閱讀本書本書主要分為兩篇:基礎篇和挖掘實戰(zhàn)篇;A篇介紹了大數據相關技術:Hadoop、Hive、HBase、Pig、Spark、Oozie等。針對每個技術都有相應模塊與之對應,首先對該技術的概念、內部原理等進行介紹,使讀者對該技術有一個由淺入深的理解;其次在對原理的介紹中會配合相應的動手實踐,加深對原理的理解。在每個模塊的最后,會有1~2個企業(yè)案例,主要講解使用當前模塊的技術來解決其中的1~2個問題,這樣讀者不僅對技術的原理、架構有了較深入的了解,同時,對于如何應用該技術也有了一定認識,從而為以后的工作、學習打下良好基礎。挖掘實戰(zhàn)篇通過對一個大型的企業(yè)應用案例的介紹,充分應用基礎篇講解的大數據技術來解決企業(yè)應用中遇到的各
Contents 目錄
前言
第一篇 基礎篇
第1章 淺談大數據2
1.1 大數據概述3
1.2 大數據平臺4
1.3 本章小結5
第2章 大數據存儲與運算利器—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)系統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實現53
2.5.1 K-Means算法原理53
2.5.2 動手實踐:K-Means算法實現55
2.5.3 Hadoop K-Means算法實現思路55
2.5.4 Hadoop K-Means編程實現57
2.6 TF-IDF算法原理及HadoopMapReduce實現67
2.6.1 TF-IDF算法原理67
2.6.2 Hadoop TF-IDF編程思路67
2.6.3 Hadoop TF-IDF編程實現68
2.7 本章小結79
第3章 大數據查詢—Hive81
3.1 Hive概述81
3.1.1 Hive體系架構82
3.1.2 Hive數據類型86
3.1.3 Hive安裝87
3.1.4 動手實踐:Hive安裝配置91
3.1.5 動手實踐:HiveQL基礎—SQL91
3.2 HiveQL語句93
3.2.1 數據庫操作94
3.2.2 Hive表定義94
3.2.3 數據導入100
3.2.4 數據導出103
3.2.5 HiveQL查詢104
3.3 動手實踐:基于Hive的學生信息查詢108
3.4 基于Hive的航空公司客戶價值數據預處理及分析109
3.4.1 背景與挖掘目標109
3.4.2 分析方法與過程111
3.5 本章小結115
第4章 大數據快速讀寫—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數據模型127
4.3.3 讀取/寫入HBase數據128
4.3.4 RowKey設計原則129
4.3.5 動手實踐:HBase數據模型驗證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的冠字號查詢系統151
4.6.1 案例背景151
4.6.2 功能指標151
4.6.3 系統設計152
4.6.4 動手實踐:構建基于HBase的冠字號查詢系統162
4.7 本章小結175
第5章 大數據處理—Pig176
5.1 Pig概述176
5.1.1 Pig Latin簡介177
5.1.2 Pig數據類型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 數據加載182
5.3.2 數據存儲184
5.3.3 Pig參數替換185
5.3.4 數據轉換186
5.4 綜合實踐194
5.4.1 動手實踐:訪問統計信息數據處理194
5.4.2 動手實踐:股票交易數據處理195
5.5 本章小結196
第6章 大數據快速運算與挖掘—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實時日志統計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 編程實現229
6.5.4 問題解決及模型調優(yōu)233
6.6 動手實踐:基于Spark ALS電影推薦系統234
6.6.1 動手實踐:生成算法包235
6.6.2 動手實踐:完善推薦系統239
6.7 本章小結250
第7章 大數據工作流—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定義及調度260
7.3.3 動手實踐:Pig WorkFlow定義及調度263
7.3.4 動手實踐:Hive WorkFlow定義及調度265
7.3.5 動手實踐:Spark WorkFlow定義及調度267
7.3.6 動手實踐:Spark On Yarn定義及調度268
7.4 Oozie Coordinator實踐270
7.4.1 動手實踐:基于時間調度270
7.4