大數(shù)據(jù)基本處理框架原理與實(shí)踐
定 價(jià):43.8 元
叢書名:普通高等教育人工智能與大數(shù)據(jù)系列教材
- 作者:劉春
- 出版時(shí)間:2021/12/1
- ISBN:9787111694939
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP274
- 頁(yè)碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書針對(duì)大數(shù)據(jù)處理的兩種典型方式,即批處理和流處理,介紹了當(dāng)前Apache軟件基金會(huì)三大軟件開源項(xiàng)目Hadoop、Spark和Storm中主要的存儲(chǔ)及計(jì)算框架。本書從初學(xué)者的角度出發(fā),聚焦于大數(shù)據(jù)處理框架的基本原理以及安裝和部署等實(shí)踐過(guò)程。通過(guò)本書的學(xué)習(xí),讀者在了解處理框架的結(jié)構(gòu)、設(shè)計(jì)原理以及執(zhí)行流程等原理性知識(shí)的同時(shí),還可以結(jié)合本書給出的完整部署過(guò)程以及WordCount等示例的完整源代碼,熟悉如何使用這些處理框架來(lái)編寫大數(shù)據(jù)處理程序以及大數(shù)據(jù)處理程序的基本結(jié)構(gòu)。
本書配套PPT、源代碼等資源,歡迎選用本書作為教材的老師登錄機(jī)工教育服務(wù)網(wǎng)www.cmpedu.com注冊(cè)下載。
本書可作為高等院校計(jì)算機(jī)、數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)及人工智能或相關(guān)專業(yè)的本科生或研究生教材,也可供相關(guān)工程技術(shù)人員閱讀參考。
隨著手機(jī)和攝像頭等大量移動(dòng)設(shè)備的使用、Web 2.0和社交網(wǎng)絡(luò)帶來(lái)的數(shù)據(jù)產(chǎn)生方式的轉(zhuǎn)變,以及云計(jì)算、Hadoop、Spark等的出現(xiàn),大數(shù)據(jù)越來(lái)越多地對(duì)人們的生活、企業(yè)的運(yùn)營(yíng)以及國(guó)家的治理和安全產(chǎn)生深遠(yuǎn)的影響。在這種情況下,研究大數(shù)據(jù)處理技術(shù),培養(yǎng)大數(shù)據(jù)專業(yè)人才得到了國(guó)家和社會(huì)各界的廣泛重視。當(dāng)前,已經(jīng)有越來(lái)越多的高校開設(shè)數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)專業(yè),也有越來(lái)越多的人學(xué)習(xí)大數(shù)據(jù)處理技術(shù)。
1本書的定位
對(duì)于初次接觸大數(shù)據(jù)處理技術(shù)的讀者來(lái)說(shuō),了解大數(shù)據(jù)處理框架的基本原理并能夠搭建運(yùn)行和開發(fā)環(huán)境,編寫簡(jiǎn)單的應(yīng)用代碼,進(jìn)而掌握大數(shù)據(jù)處理程序的基本結(jié)構(gòu)與編寫流程,往往是有難度的。
本書面向大數(shù)據(jù)處理技術(shù)的初學(xué)者,在介紹大數(shù)據(jù)處理框架的結(jié)構(gòu)、設(shè)計(jì)原理以及執(zhí)行流程等原理性知識(shí)的同時(shí),還給出了大數(shù)據(jù)處理框架的完整安裝過(guò)程以及WordCount等示例的完整程序代碼,并對(duì)代碼進(jìn)行詳細(xì)的注釋說(shuō)明。本書強(qiáng)調(diào)完整的安裝過(guò)程和示例代碼,可以省去讀者查找安裝過(guò)程、代碼以及調(diào)試代碼Bug所帶來(lái)的麻煩。在介紹安裝過(guò)程和示例代碼的過(guò)程中盡可能地對(duì)大數(shù)據(jù)處理框架涉及的諸如Linux命令、文件系統(tǒng)、分布式日志收集工具Flume等相關(guān)知識(shí)點(diǎn)進(jìn)行了簡(jiǎn)單的介紹,可節(jié)省讀者了解相關(guān)背景知識(shí)所需要的時(shí)間。
2本書的主要內(nèi)容
本書主要聚焦于大數(shù)據(jù)處理的兩種主要方式,即批處理和流處理,介紹當(dāng)前Apache軟件基金會(huì)的三大軟件開源項(xiàng)目Hadoop、Spark和Storm中的主要存儲(chǔ)和計(jì)算組件。由于Hadoop與Spark的組件眾多,從實(shí)際應(yīng)用開發(fā)者的角度出發(fā),針對(duì)Hadoop主要介紹HDFS、MapReduce和HBase三個(gè)組件,針對(duì)Spark主要介紹Spark的核心框架以及Spark應(yīng)用于流處理的Spark Streaming組件。
HDFS、MapReduce和HBase是Hadoop的核心組件。HDFS是Hadoop的分布式文件系統(tǒng),HBase是Hadoop的分布式數(shù)據(jù)庫(kù),兩者主要解決的是大數(shù)據(jù)的可靠存儲(chǔ)。MapReduce和Spark的核心框架主要應(yīng)用于大數(shù)據(jù)的批處理。Spark作為MapReduce之后發(fā)布的批處理框架,彌補(bǔ)了MapReduce的一些局限性,具有了更強(qiáng)的計(jì)算表達(dá)能力以及更快的處理速度。但是,本書仍然對(duì)MapReduce進(jìn)行介紹,這是因?yàn)镾park的設(shè)計(jì)借鑒了MapReduce,理解MapReduce有助于更好地理解Spark。
對(duì)于流處理框架,將介紹Spark Streaming和Storm。兩者代表了實(shí)際中兩種不同的流處理方式。Spark Streaming基于Spark核心框架的批處理功能將數(shù)據(jù)流分成不同的時(shí)間片段,然后針對(duì)每個(gè)時(shí)間片段的數(shù)據(jù)進(jìn)行批處理。因此,Spark Streaming對(duì)數(shù)據(jù)流的處理過(guò)程并不是完全的實(shí)時(shí)處理,而Storm采取的是實(shí)時(shí)處理。
本書的所有安裝和運(yùn)行過(guò)程都是在單機(jī)的一個(gè)虛擬機(jī)中完成的,方便讀者進(jìn)行實(shí)踐。所有的安裝過(guò)程和程序代碼都經(jīng)過(guò)作者的親自實(shí)踐,但是編寫這些安裝過(guò)程和代碼時(shí)可能出現(xiàn)錯(cuò)誤,如果在學(xué)習(xí)過(guò)程中發(fā)現(xiàn)問(wèn)題,請(qǐng)聯(lián)系作者,郵箱為liuchun@henu.edu.cn。
劉春
河南省時(shí)空大數(shù)據(jù)產(chǎn)業(yè)技術(shù)研究院
大數(shù)據(jù)基本處理框架原理與實(shí)踐
前言
第1章大數(shù)據(jù)與基本處理框架1
1.1大數(shù)據(jù)產(chǎn)生的背景1
1.1.1數(shù)字化1
1.1.2網(wǎng)絡(luò)化2
1.2大數(shù)據(jù)的特征2
1.3大數(shù)據(jù)的價(jià)值與意義3
1.3.1量變到質(zhì)變3
1.3.2數(shù)據(jù)科學(xué)的產(chǎn)生4
1.3.3思維的變革4
1.4大數(shù)據(jù)帶來(lái)的挑戰(zhàn)5
1.5大數(shù)據(jù)的基本處理框架5
1.5.1Hadoop6
1.5.2Spark7
1.5.3Storm8
1.6本章小結(jié)8
第2章運(yùn)行與開發(fā)環(huán)境搭建10
2.1虛擬機(jī)的創(chuàng)建10
2.1.1虛擬化軟件的安裝10
2.1.2虛擬機(jī)的創(chuàng)建11
2.1.3VMware Tools的安裝17
2.2Linux的常用命令18
2.3JDK的安裝18
2.4IDEA+Maven的安裝20
2.4.1IDEA的安裝20
2.4.2Maven的安裝21
2.4.3在IDEA項(xiàng)目中配置JDK
和Maven22
2.5Hadoop運(yùn)行環(huán)境部署23
2.5.1SSH的安裝23
2.5.2Hadoop的安裝24
2.5.3偽分布式環(huán)境配置25
2.6本章小結(jié)27
第3章Hadoop文件系統(tǒng)(HDFS)28
3.1文件系統(tǒng)28
3.2HDFS分布式文件系統(tǒng)28
3.2.1HDFS的設(shè)計(jì)目標(biāo)29
3.2.2HDFS的原理與結(jié)構(gòu)30
3.3HDFS的操作流程31
3.3.1HDFS文件讀流程32
3.3.2HDFS文件寫流程32
3.4HDFS的接口34
3.4.1Shell命令34
3.4.2Web客戶端36
3.4.3Java API36
3.5本章小結(jié)40
第4章Hadoop分布式計(jì)算框架
MapReduce414.1MapReduce計(jì)算框架概述41
4.2MapReduce計(jì)算過(guò)程42
4.2.1map階段42
4.2.2shuffle階段43
4.2.3reduce階段45
4.3MapReduce的架構(gòu)與運(yùn)行流程45
4.4WordCount的MapReduce程序47
4.4.1WordCount程序的pom.xml文件47
4.4.2WordCount程序的Java文件48
4.4.3WordCount代碼說(shuō)明50
4.5Mapper/Reducer類源碼解析52
4.6Hadoop的數(shù)據(jù)類型55
4.6.1Hadoop基本數(shù)據(jù)類型55
4.6.2自定義Hadoop數(shù)據(jù)類型56
4.7數(shù)據(jù)輸入格式InputFormat58
4.7.1默認(rèn)的TextInputFormat58
4.7.2getSplits()操作60
4.7.3LineRecordReader62
4.7.4自定義輸入格式65
4.8數(shù)據(jù)的輸出格式OutputFormat66
4.8.1默認(rèn)的輸出格式
TextOutputFormat66
4.8.2LineRecordWriter68
4.8.3自定義輸出格式類型71
4.8.4Hadoop的SequenceFile71
4.9自定義Combiner類72
4.10自定義Partioner類73
4.11多MapReduce任務(wù)的串聯(lián)74
4.12本章小結(jié)78
第5章Hadoop數(shù)據(jù)庫(kù)系統(tǒng)HBase79
5.1HBase概述79
5.1.1數(shù)據(jù)庫(kù)與數(shù)據(jù)庫(kù)系統(tǒng)79
5.1.2傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)80
5.1.3NoSQL數(shù)據(jù)庫(kù)系統(tǒng)80
5.1.4HBase數(shù)據(jù)庫(kù)系統(tǒng)80
5.2HBase的數(shù)據(jù)模型81
5.2.1HBase的邏輯視圖81
5.2.2HBase的物理視圖82
5.3HBase的架構(gòu)與運(yùn)行機(jī)制83
5.3.1HBase分布式存儲(chǔ)策略83
5.3.2HBase的運(yùn)行架構(gòu)85
5.4HBase的安裝與部署88
5.4.1安裝ZooKeeper88
5.4.2安裝HBase 90
5.4.3偽分布式環(huán)境配置90
5.5HBase操作接口與實(shí)踐92
5.5.1HBase Shell命令92
5.5.2Java API96
5.6本章小結(jié)107
第6章分布式內(nèi)存計(jì)算框架Spark108
6.1Spark概述108
6.1.1MapReduce計(jì)算框架的局限性108
6.1.2Spark的優(yōu)勢(shì)與特點(diǎn)109
6.2Spark的架構(gòu)110
6.2.1Spark的基本組件110
6.2.2Spark的運(yùn)行流程111
6.3RDD112
6.3.1RDD的概念與Spark計(jì)算模型112
6.3.2RDD的各種操作114
6.3.3RDD之間的依賴關(guān)系118
6.3.4RDD計(jì)算過(guò)程的容錯(cuò)處理121
6.4Scala語(yǔ)言介紹122
6.4.1變量和類型123
6.4.2控制結(jié)構(gòu)129
6.5Spark的安裝部署131
6.5.1Spark安裝文件的下載131
6.5.2Spark的安裝過(guò)程132
6.6基于Spark Shell的WordCount程序133
6.6.1啟動(dòng)Spark Shell133
6.6.2從本地及HDFS讀取
WordCount數(shù)據(jù)134
6.6.3退出Spark Shell136
6.7基于IDEA+Maven的
WordCount程序136
6.7.1IDEA安裝Scala插件與SDK137
6.7.2基于Scala的WordCount Spark
應(yīng)用程序139
6.7.3基于Java的WordCount Spark
應(yīng)用程序144
6.8Spark與HBase的整合146
6.8.1pom.xml文件147
6.8.2Scala Class文件148
6.9Spark創(chuàng)建RDD的常用方式150
6.9.1基于Scala集合創(chuàng)建RDD150
6.9.2基于外部存儲(chǔ)系統(tǒng)創(chuàng)建RDD151
6.10Spark的共享變量152
6.10.1廣播變量152
6.10.2累加器153
6.11本章小結(jié)154
第7章Spark流計(jì)算框架
(Spark Streaming)1567.1流計(jì)算與流計(jì)算框架156
7.2Spark Streaming的原理與概念157
7.2.1Spark Streaming的設(shè)計(jì)原理157
7.2.2Dstream與Dstream graph157
7.2.3Spark Streaming的結(jié)構(gòu)
與執(zhí)行流程160
7.2.4Spark Streaming的容錯(cuò)處理162
7.3Spark Streaming的WordCount案例163
7.3.1以Socket為數(shù)據(jù)源163
7.3.2以文本文件目錄為數(shù)據(jù)源166
7.4Spark Streaming整合Flume167
7.4.1Flume介紹167
7.4.2Flume的下載安裝與配置169
7.4.3整合Flume與Spark Streaming172
7.5Spark Streaming整合Kafka178
7.5.1Kafka介紹178
7.5.2Kafka的下載安裝180
7.5.3Kafka的常用命令181
7.5.4整合Kafka與Spark Streaming181
7.6本章小結(jié)184
第8章實(shí)時(shí)流計(jì)算框架Storm185
8.1Storm的邏輯架構(gòu)185
8.2Storm的物理架構(gòu)186
8.2.1Storm集群的架構(gòu)186
8.2.2數(shù)據(jù)流的分組策略187
8.3Storm的消息容錯(cuò)機(jī)制188
8.4Strom的下載與安裝190
8.4.1Storm的安裝配置190
8.4.2Storm的啟動(dòng)191
8.5Storm的WordCount程序192
8.5.1Pom.xml文件193
8.5.2Java Class文件193
8.5.3提交集群運(yùn)行198