本書全面介紹了Hadoop生態(tài)系統(tǒng)中各個開源組件的理論知識和實踐案例。全書分為上篇——Hadoop基礎篇、中篇——Hadoop提高篇、下篇——案例篇三部分,共11章,涉及數(shù)據(jù)采集、數(shù)據(jù)存儲與管理、數(shù)據(jù)處理與分析、數(shù)據(jù)可視化一系列大數(shù)據(jù)應用生命周期中各階段典型組件的理論知識、安裝部署和實戰(zhàn)使用。上篇為第1~8章,具體內(nèi)容包括大數(shù)據(jù)概述、初識Hadoop、分布式文件系統(tǒng)HDFS、分布式計算框架MapReduce、統(tǒng)一資源管理和調(diào)度框架YARN、分布式協(xié)調(diào)框架ZooKeeper、分布式數(shù)據(jù)庫HBase、數(shù)據(jù)倉庫Hive;中篇為第9、10章,具體內(nèi)容包括大數(shù)據(jù)遷移和采集工具、數(shù)據(jù)可視化;下篇為第11章,介紹了使用Hadoop平臺完成用戶畫像項目的全過程。本書在Hadoop、HDFS、MapReduce、ZooKeeper、HBase、Hive等重要章節(jié)安排了初級實踐操作,以便讀者更好地學習和掌握Hadoop關鍵技術(shù)。
本書內(nèi)容翔實,案例豐富,既可作為高等院校大數(shù)據(jù)、計算機、人工智能等相關專業(yè)研究生、本科生的大數(shù)據(jù)課程教材,也可供相關技術(shù)人員參考。
本書配套有《Hadoop大數(shù)據(jù)原理與應用實驗教程》,同時可在西安電子科技大學出版社網(wǎng)站下載本書作者提供的相關資源。
大數(shù)據(jù)時代的到來,帶來了信息技術(shù)發(fā)展的巨大變革,并深刻影響著社會生產(chǎn)和人民生活的方方面面。在全球范圍內(nèi),世界各國政府均高度重視大數(shù)據(jù)技術(shù)的研究與產(chǎn)業(yè)發(fā)展,紛紛把大數(shù)據(jù)上升為國家戰(zhàn)略加以重點推進。大數(shù)據(jù)已經(jīng)成為企業(yè)和社會關注的重要戰(zhàn)略資源,越來越多的行業(yè)面臨著海量數(shù)據(jù)存儲和分析的挑戰(zhàn)。
Hadoop由道格·卡丁(Doug Cutting)創(chuàng)建,起源于開源項目網(wǎng)絡搜索引擎Apache
Nutch,于2008年1月成為Apache頂級項目。Hadoop是一個開源的、可運行于大規(guī)模集群上的分布式存儲和計算的軟件框架,它具有高可靠、彈性可擴展等特點,非常適合處理海量數(shù)據(jù)。Hadoop實現(xiàn)了分布式文件系統(tǒng)HDFS和分布式計算框架MapReduce等功能,允許用戶在不了解分布式系統(tǒng)底層細節(jié)的情況下,使用簡單的編程模型輕松編寫出分布式程序,并將其運行于計算機集群上,完成對大規(guī)模數(shù)據(jù)集的存儲和分析。目前,Hadoop在業(yè)內(nèi)得到了廣泛應用,已經(jīng)是公認的大數(shù)據(jù)通用存儲和分析平臺,許多廠商都圍繞Hadoop提供開發(fā)工具、開源軟件、商業(yè)化工具和技術(shù)服務,例如谷歌、雅虎、微軟、淘寶等都支持Hadoop。另外,還有一些專注于Hadoop的公司,例如Cloudera、Hortonworks和MapR都可以提供商業(yè)化的Hadoop支持。
未來5~10年,我國大數(shù)據(jù)產(chǎn)業(yè)將會處于高速發(fā)展時期,社會亟需高校培養(yǎng)一大批大數(shù)據(jù)相關專業(yè)人才。自2016年以來,我國新增的大數(shù)據(jù)類專業(yè)包括“數(shù)據(jù)科學與大數(shù)據(jù)技術(shù)”本科專業(yè)(080910T)、“數(shù)據(jù)管理與應用”本科專業(yè)(120108T)、“大數(shù)據(jù)技術(shù)與應用”專科專業(yè)(610215),以適應地方產(chǎn)業(yè)發(fā)展對戰(zhàn)略性新興產(chǎn)業(yè)的人才需求。因此,學會使用大數(shù)據(jù)通用存儲和分析平臺Hadoop及其生態(tài)系統(tǒng)對于未來適應新一代信息技術(shù)產(chǎn)業(yè)的發(fā)展具有重要的意義。
本書面向Hadoop生態(tài)系統(tǒng),以企業(yè)需求為導向,緊緊圍繞大數(shù)據(jù)應用的閉環(huán)流程展開講述,引導讀者構(gòu)建大數(shù)據(jù)知識體系和進行大數(shù)據(jù)技術(shù)的初級實踐,旨在使讀者掌握Hadoop生態(tài)系統(tǒng)的設計原理和Hadoop平臺的運用能力。
本書分為上篇——Hadoop基礎篇、中篇——Hadoop提高篇和下篇——案例篇三大部分,共11章,涉及數(shù)據(jù)采集、數(shù)據(jù)存儲與管理、數(shù)據(jù)處理與分析、數(shù)據(jù)可視化一系列大數(shù)據(jù)應用生命周期中各階段典型組件的理論知識、安裝部署和實戰(zhàn)使用。上篇即Hadoop基礎篇,為1~8章,其中第1章介紹了大數(shù)據(jù)的基本概念和相關產(chǎn)業(yè),分析了大數(shù)據(jù)與云計算、物聯(lián)網(wǎng)、人工智能、5G之間的關系,梳理了大數(shù)據(jù)職業(yè)崗位,同時給出了大數(shù)據(jù)的學習路線;第2章介紹了大數(shù)據(jù)處理平臺Hadoop的來源、發(fā)展史、生態(tài)系統(tǒng)、體系架構(gòu)和應用現(xiàn)狀等,并演示了如何在Linux操作系統(tǒng)下部署Hadoop集群;第3章介紹了分布式文件系統(tǒng)HDFS的特征、體系架構(gòu)、文件存儲機制和數(shù)據(jù)讀/寫過程,通過實戰(zhàn)案例演示了HDFS用戶接口HDFS Web、HDFS Shell和HDFS Java API的使用,并講述了HDFS實現(xiàn)高可靠性的幾種機制;第4章介紹了分布式計算框架MapReduce的編程思想、作業(yè)執(zhí)行流程、數(shù)據(jù)類型、Shuffle機制,通過引入入門案例WordCount詳細講解了MapReduce的內(nèi)部實現(xiàn)細節(jié),通過實戰(zhàn)案例演示了如何定義和使用自定義組件,以及MapReduce Shell、MapReduce Web和MapReduce Java API的使用,并簡單介紹了目前其他主流分布式計算框架;第5章從MapReduce 1.0存在的問題入手,引入新一代資源管理和調(diào)度框架YARN,簡述了YARN的優(yōu)勢、發(fā)展目標、體系架構(gòu)和工作流程,演示了YARN的基本使用,并介紹了YARN的新特性和當前常見的其他統(tǒng)一資源管理與調(diào)度平臺;第6章介紹了分布式協(xié)調(diào)框架ZooKeeper的來源、基本概念、系統(tǒng)模型、工作原理、典型應用場景,演示了ZooKeeper集群的部署過程,并通過實戰(zhàn)案例講述了ZooKeeper四字命令、ZooKeeper Shell、ZooKeeper Java API等實踐技能;第7章介紹了NoSQL數(shù)據(jù)庫的特點以及HBase數(shù)據(jù)庫的發(fā)展史、基本特點、數(shù)據(jù)模型、體系結(jié)構(gòu),演示了HBase集群的部署過程,通過實戰(zhàn)案例講述了HBase Shell、HBase Java API的使用方法,以及如何在HBase中使用MapReduce,并介紹了HBase性能優(yōu)化的常見方法;第8章介紹了數(shù)據(jù)倉庫Hive的基本工作流程、特征、體系架構(gòu)、數(shù)據(jù)類型、文件格式、函數(shù)等知識,演示了部署Hive的過程,通過實戰(zhàn)案例講述了HWI、Hive Shell、HiveQL語句和Hive Java API的使用方法,并介紹了幾種常見的Hive優(yōu)化策略。中篇即Hadoop提高篇,為第9、10章,其中第9章從初步認識、體系架構(gòu)、安裝部署、實戰(zhàn)應用四個方面依次介紹了數(shù)據(jù)遷移工具Sqoop、日志采集工具Flume、分布式流平臺Kafka和ETL工具Kettle,同時也簡要介紹了當前比較常見的其他數(shù)據(jù)遷移工具;第10章介紹了數(shù)據(jù)可視化的基本概念、歷史、意義、常用圖表類型,重點演示了ECharts、Python、Tableau、阿里云DataV、D3.js等幾種主流數(shù)據(jù)可視化工具的使用。下篇即案例篇,為第11章,本章旨在通過一個具體項目案例,介紹如何借助Hadoop大數(shù)據(jù)處理平臺,基于華為P30手機的評論數(shù)據(jù)進行數(shù)據(jù)分析,從而得到用戶畫像的完整
過程。
為了方便讀者整體把握各章知識,在每章開始位置均配備有本章知識結(jié)構(gòu)圖。根據(jù)近幾年的教學實踐,建議安排32學時理論課,第1、2、5、10章每章安排2學時,第3、4、6、7、8、9章每章安排4學時,第11章由學生自學完成。另外,建議增加16學時的上機實踐課。
本書面向高等院校計算機、大數(shù)據(jù)、人工智能等相關專業(yè)的研究生、本科生,可以作為專業(yè)核心課程大數(shù)據(jù)技術(shù)原理與應用的教材。本書擁有配套的實驗教材《Hadoop大數(shù)據(jù)原理與應用實驗教程》(亦由本書作者編寫,由西安電子科技大學出版社出版),兩本書配套使用,可以達到更好的學習效果。
本書由校企聯(lián)合完成,第1章由西京學院于長青編寫,第2章由安徽信息工程學院李月軍編寫,第3、7、8章由西京學院左銀波編寫,第4章由國信藍橋教育科技(北京)股份有限公司顏群工程師編寫,第5、6、9章由西京學院徐魯輝編寫,第10章由鄭州升達經(jīng)貿(mào)管理學院王芳編寫,第11章由鄭州升達經(jīng)貿(mào)管理學院周湘貞編寫。全書由國信藍橋教育科技(北京)股份有限公司大數(shù)據(jù)專家唐友剛主審,由西京學院徐魯輝負責策劃、審校和定稿。
本書與配套實驗教材《Hadoop大數(shù)據(jù)原理與應用實驗教程》擁有完整的立體化資源,包括教學大綱、授課計劃、教案、PPT、源代碼、在線題庫、實驗大綱、實驗指導書、實驗視頻、項目案例庫等教學資源,提供全方位的免費服務。讀者可通過以下三種方式免費在線瀏覽或下載全部配套資源:教材官方網(wǎng)站https://dzxxgcx.xijing.edu.cn/xkzy/zxkc. htm/pabigdata/index.asp,教材官方云班課“Hadoop大數(shù)據(jù)原理與應用教材云班課”(邀請碼為5962412),教材官方GitHub網(wǎng)站https://github.com/xuluhuixijing/pabigdata。
本書中關于圖形界面元素代替符號的約定如表1所示。
表1 本書中圖形界面元素的代替符號約定
文字描述 代替符號 舉 例
按鈕 邊框?+?陰影?+?底紋 “確定”按鈕可簡化為?確定
菜單項 『 』 菜單項“文件”可簡化為『File』
連續(xù)選擇菜單項及子菜單項 → 選擇『File』→『New』→『Java Project』
下拉框、單選框、復選框選項 [ ] 復選框選項“啟用用戶”可簡化為[啟用用戶]
窗口名 【 】 例如,進入窗口【Properties for HDFSExample】
提示信息 “ ” 例如,否則會出現(xiàn)錯誤信息“bash: ****: command not found...”
本書中各實驗所使用軟件的名稱、版本、發(fā)布日期及下載地址如表2所示。
表2 本書使用軟件的名稱、版本、發(fā)布日期及下載地址
序號 軟件
名稱 軟件
版本 發(fā)布日期 下載地址 安裝文件名
1 VMware Workstation Pro VMware Workstation 12.5.7 Pro for Windows 2017.6.22 https://www.vmware.com/products/
workstationpro.html VMwareworkstationfull12.5.7
5813279.exe
2 CentOS CentOS 7.6.1810 2018.11.26 https://www.centos.org/download/ CentOS7x86_64DVD1810.iso
3 Java Oracle JDK 8u191 2018.10.16 http://www.oracle.com/technetwork/java/
javase/downloads/index.html jdk8u191linuxx64.tar.gz
4 Hadoop Hadoop 2.9.2 2018.11.19 http://hadoop.apache.org/releases.html hadoop2.9.2.tar.gz
5 Eclipse Eclipse IDE 201809 for Java Developers 2018.9 https://www.eclipse.org/downloads/packages eclipsejava201809linuxgtk
x86_64.tar.gz
6 ZooKeeper ZooKeeper 3.4.13 2018.7.15 http://zookeeper.apache.org/releases.html zookeeper3.4.13.tar.gz
7 HBase HBase 1.4.10 2019.6.10 https://hbase.apache.org/downloads.html hbase1.4.10bin.tar.gz
續(xù)表
序號 軟件
名稱 軟件
版本 發(fā)布日期 下載地址 安裝文件名
8 MySQL Connector/J MySQL Connector/J 5.1.48 2019.7.29 https://dev.mysql.com/downloads/connector/j/ mysqlconnectorjava5.1.48.tar.gz
9 MySQL Community Server MySQL Community 5.7.27 2019.7.22 http://dev.mysql.com/get/mysql57community
releaseel711.noarch.rpm mysql57communityreleaseel7
11.noarch.rpm(Yum Repository)
10 Hive Hive 2.3.4 2018.11.7 https://hive.apache.org/downloads.html apachehive2.3.4bin.tar.gz
11 Spark Spark 2.3.3 2019.2.15 https://spark.apache.org/downloads.html spark2.3.3binhadoop2.7.tgz
12 Sqoop Sqoop 1.4.7 2017.12 http://www.apache.org/dyn/closer.lua/sqoop/ sqoop1.4.7.bin__hadoop2.6.0.tar.gz
13 Flume Flume 1.9.0 2019.1.8 http://flume.apache.org/download.html apacheflume1.9.0bin.tar.gz
14 Kafka Kafka 2.1.1 2019.2.15 http://kafka.apache.org/downloads kafka_2.122.1.1.tgz
在本書編寫與出版過程中,國信藍橋教育科技(北京)股份有限公司高校合作部項目經(jīng)理單寶軍在教材編寫方面提供了幫助,西京學院校長黃文準、西京學院信息工程學院院長郭建新、副院長烏偉在學院政策方面提供了支持,西安電子科技大學出版社李惠萍編輯對本書的出版提供了很多意見和建議,在此表示衷心感謝。
本書在撰寫的過程中參考了部分國內(nèi)外教材、專著、論文和開源社區(qū)資源,在此向這些作者一并致謝。由于作者水平和能力有限,書中難免有疏漏與不足之處,衷心希望廣大同行和讀者批評指正。
上篇 Hadoop基礎篇
第1章 大數(shù)據(jù)概述 2
1.1 大數(shù)據(jù)內(nèi)涵 3
1.2 大數(shù)據(jù)的特征 5
1.3 大數(shù)據(jù)的關鍵技術(shù) 6
1.4 大數(shù)據(jù)產(chǎn)業(yè) 8
1.5 大數(shù)據(jù)與物聯(lián)網(wǎng)、云計算、人工智能、5G的關系 11
1.6 大數(shù)據(jù)崗位介紹 12
1.7 大數(shù)據(jù)學習路線 13
本章小結(jié) 14
思考與練習題 15
第2章 初識Hadoop 16
2.1 Hadoop概述 17
2.2 Hadoop生態(tài)系統(tǒng) 20
2.3 Hadoop的體系架構(gòu) 23
2.4 Hadoop的應用現(xiàn)狀 23
2.5 部署和運行Hadoop 25
本章小結(jié) 50
思考與練習題 50
實驗1 部署全分布模式Hadoop集群 51
第3章 分布式文件系統(tǒng)HDFS 52
3.1 HDFS簡介 53
3.2 HDFS的體系架構(gòu) 53
3.3 HDFS文件的存儲機制 55
3.4 HDFS數(shù)據(jù)的讀/寫過程 57
3.5 實戰(zhàn)HDFS 60
3.6 HDFS的高可靠性機制 75
本章小結(jié) 89
思考與練習題 89
實驗2 實戰(zhàn)HDFS 90
第4章 分布式計算框架MapReduce 91
4.1 MapReduce簡介 92
4.2 第一個MapReduce案例:WordCount 92
4.3 MapReduce的作業(yè)執(zhí)行流程 97
4.4 MapReduce的數(shù)據(jù)類型與格式 101
4.5 Shuffle的機制 104
4.6 在MapReduce中自定義組件 105
4.7 實戰(zhàn)MapReduce 109
4.8 MapReduce調(diào)優(yōu) 116
4.9 其他主流計算框架 118
本章小結(jié) 119
思考與練習題 120
實驗3 MapReduce編程 120
第5章 統(tǒng)一資源管理和調(diào)度框架YARN 122
5.1 初識YARN 123
5.2 YARN的體系架構(gòu) 126
5.3 YARN的工作流程 127
5.4 實戰(zhàn)YARN 129
5.5 YARN的新特性 134
5.6 其他統(tǒng)一資源管理調(diào)度框架 141
本章小結(jié) 150
思考與練習題 151
第6章 分布式協(xié)調(diào)框架ZooKeeper 152
6.1 分布式協(xié)調(diào)技術(shù) 153
6.2 初識ZooKeeper 154
6.3 ZooKeeper的系統(tǒng)模型 156
6.4 ZooKeeper的工作原理 163
6.5 ZooKeeper的典型應用場景 172
6.6 部署ZooKeeper集群 176
6.7 實戰(zhàn)ZooKeeper 183
本章小結(jié) 218
思考與練習題 219
實驗4 部署ZooKeeper集群和實戰(zhàn)ZooKeeper 220
第7章 分布式數(shù)據(jù)庫HBase 221
7.1 NoSQL簡介 222
7.2 初識HBase 224
7.3 HBase的數(shù)據(jù)模型 224
7.4 HBase的體系架構(gòu) 229
7.5 HBase的運行機制 233
7.6 部署HBase集群 235
7.7 實戰(zhàn)HBase 241
7.8 HBase的性能優(yōu)化 264
本章小結(jié) 265
思考與練習題 266
實驗5 部署全分布模式HBase集群和實戰(zhàn)HBase 267
第8章 數(shù)據(jù)倉庫Hive 268
8.1 初識Hive 269
8.2 Hive的體系架構(gòu) 271
8.3 Hive的數(shù)據(jù)類型 273
8.4 Hive的文件格式 275
8.5 Hive的數(shù)據(jù)模型 275
8.6 Hive函數(shù) 278
8.7 部署Hive 285
8.8 實戰(zhàn)Hive 299
8.9 Hive的優(yōu)化策略 307
本章小結(jié) 308
思考與練習題 309
實驗6 部署本地模式Hive和實戰(zhàn)Hive 309
中篇 Hadoop提高篇
第9章 大數(shù)據(jù)遷移和采集工具 312
9.1 數(shù)據(jù)遷移工具Sqoop 313
9.2 日志采集工具Flume 344
9.3 分布式流平臺Kafka 357
9.4 ETL工具Kettle 371
本章小結(jié) 377
思考與練習題 378
第10章 數(shù)據(jù)可視化 379
10.1 可視化概念 380
10.2 可視化的作用與意義 381
10.3 可視化圖表的類型 386
10.4 可視化工具 391
本章小結(jié) 419
思考與練習題 419
下篇 案 例 篇
第11章 華為P30手機評論畫像分析 422
11.1 需求分析 423
11.2 項目設計 423
11.3 項目環(huán)境搭建 423
11.4 數(shù)據(jù)采集與預處理 424
11.5 使用Hive分析數(shù)據(jù) 430
11.6 數(shù)據(jù)可視化 437
本章小結(jié) 443
思考與練習題 443
參考文獻 444