大數(shù)據(jù)基礎(chǔ)及應(yīng)用
定 價:39.5 元
叢書名: 大數(shù)據(jù)技術(shù)與應(yīng)用專業(yè)規(guī)劃教材
- 作者:呂云翔,鐘巧靈,衣志昊
- 出版時間:2017/3/1
- ISBN:9787302466918
- 出 版 社:清華大學(xué)出版社
- 中圖法分類:TP274
- 頁碼:231
- 紙張:膠版紙
- 版次:1
- 開本:16K
本書分為三大部分,分別是大數(shù)據(jù)概述及基礎(chǔ)、大數(shù)據(jù)處理和大數(shù)據(jù)分析與應(yīng)用。其中,大數(shù)據(jù)概述及基礎(chǔ)部分重點(diǎn)介紹數(shù)據(jù)組織、重要數(shù)據(jù)結(jié)構(gòu)、大數(shù)據(jù)協(xié)同技術(shù)以及大數(shù)據(jù)存儲技術(shù)等內(nèi)容;大數(shù)據(jù)處理部分重點(diǎn)介紹大數(shù)據(jù)處理框架,包括大數(shù)據(jù)批處理和流處理框架等內(nèi)容;大數(shù)據(jù)分析與應(yīng)用部分重點(diǎn)介紹數(shù)據(jù)分析技術(shù)和機(jī)器學(xué)習(xí)的相關(guān)內(nèi)容,以及如何利用阿里云的數(shù)加平臺進(jìn)行基本的大數(shù)據(jù)開發(fā)工作。
本書詳細(xì)介紹了大數(shù)據(jù)的基本概念、原理與方法,以及通過大數(shù)據(jù)實(shí)踐來講述大數(shù)據(jù)技術(shù)的應(yīng)用,包括如何運(yùn)用阿里云大數(shù)據(jù)計算平臺解決和分析實(shí)際的問題。本書*后還提供了大數(shù)據(jù)實(shí)踐案例,完整地體現(xiàn)了理論與實(shí)踐的有機(jī)結(jié)合。
互聯(lián)網(wǎng)技術(shù)不斷發(fā)展,各種技術(shù)不斷涌現(xiàn),其中大數(shù)據(jù)技術(shù)已成為一顆閃耀的新星。我們已經(jīng)處于數(shù)據(jù)世界,互聯(lián)網(wǎng)每天產(chǎn)生大量的數(shù)據(jù),利用好這些數(shù)據(jù)可以給我們的生活帶來巨大的變化以及提供極大的便利。目前大數(shù)據(jù)技術(shù)受到越來越多的機(jī)構(gòu)的重視,因?yàn)榇髷?shù)據(jù)技術(shù)可以給其創(chuàng)造巨大的利潤,其中的典型代表是個性化推薦以及大數(shù)據(jù)精準(zhǔn)營銷。
本書在講述大數(shù)據(jù)的基本概念、原理與方法的基礎(chǔ)上,詳細(xì)而全面地介紹了可以實(shí)際用于大數(shù)據(jù)實(shí)踐的各種技能,旨在使學(xué)生通過有限課時的學(xué)習(xí)后,不僅能對大數(shù)據(jù)技術(shù)的基本原理有所認(rèn)識,而且能夠具備基本的大數(shù)據(jù)技術(shù)開發(fā)能力以及運(yùn)用大數(shù)據(jù)技術(shù)解決基本的數(shù)據(jù)分析問題,理解大數(shù)據(jù)框架(尤其是阿里云大數(shù)據(jù)計算平臺),在阿里云大數(shù)據(jù)平臺上進(jìn)行基本的大數(shù)據(jù)開發(fā)工作的能力。
本書分為三大部分,分別是大數(shù)據(jù)概述及基礎(chǔ)、大數(shù)據(jù)處理和大數(shù)據(jù)分析與應(yīng)用。其中,大數(shù)據(jù)概述及基礎(chǔ)部分重點(diǎn)介紹數(shù)據(jù)組織、重要數(shù)據(jù)結(jié)構(gòu)、大數(shù)據(jù)協(xié)同技術(shù)以及大數(shù)據(jù)存儲技術(shù)等內(nèi)容; 大數(shù)據(jù)處理部分重點(diǎn)介紹大數(shù)據(jù)處理框架,包括大數(shù)據(jù)批處理和流處理框架等內(nèi)容; 大數(shù)據(jù)分析與應(yīng)用部分重點(diǎn)介紹數(shù)據(jù)分析技術(shù)和機(jī)器學(xué)習(xí)的相關(guān)內(nèi)容,以及如何利用阿里云的數(shù)加平臺進(jìn)行基本的大數(shù)據(jù)開發(fā)工作。
本書與其他類似著作的不同之處在于,除了講述必要的大數(shù)據(jù)理論之外,還通過大數(shù)據(jù)實(shí)踐來講述大數(shù)據(jù)技術(shù)的應(yīng)用,包括如何運(yùn)用阿里云大數(shù)據(jù)計算平臺解決和分析實(shí)際的問題,如阿里云MaxCompute和StreamCompute等。本書的*后一章“大數(shù)據(jù)實(shí)踐: 基于數(shù)加平臺的推薦系統(tǒng)”是學(xué)生在做課程設(shè)計時可供模仿的一個項(xiàng)目,它完整地體現(xiàn)了理論與實(shí)踐的有機(jī)結(jié)合。
本書的理論知識的教學(xué)安排建議如下。
章節(jié)內(nèi)容學(xué)時數(shù)
第1章大數(shù)據(jù)概念和發(fā)展背景1
第2章大數(shù)據(jù)系統(tǒng)架構(gòu)概述1~2
第3章分布式通信與協(xié)同2~4
第4章大數(shù)據(jù)存儲4~6
第5章分布式處理2
第6章Hadoop MapReduce解析2~4
第7章Spark解析2~4
第8章流計算2
第9章圖計算2
第10章阿里云大數(shù)據(jù)計算服務(wù)平臺2
第11章集群資源管理與調(diào)度4~6
第12章數(shù)據(jù)分析2~4
第13章數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)技術(shù)2~4
第14章大數(shù)據(jù)實(shí)踐: 基于數(shù)加平臺的推薦系統(tǒng)4~5
建議理論教學(xué)時數(shù): 32~48學(xué)時。
建議實(shí)驗(yàn)(實(shí)踐)教學(xué)時數(shù): 16~32學(xué)時。
教師可以按照自己對大數(shù)據(jù)的理解適當(dāng)?shù)貏h除一些章節(jié),也可以根據(jù)教學(xué)目標(biāo),靈活地調(diào)整章節(jié)的順序,增減各章的學(xué)時數(shù)。
在本書成書的過程中,得到了萬昭祎、李旭、蘇俊洋以及阿里巴巴的李妹芳等人的大力支持,在此表示衷心的感謝。
由于大數(shù)據(jù)是一門新興學(xué)科,大數(shù)據(jù)的教學(xué)方法本身還在探索之中,加之我們的水平和能力有限,本書難免有疏漏之處。懇請各位同仁和廣大讀者給予批評指正,也希望各位能將實(shí)踐過程中的經(jīng)驗(yàn)和心得與我們交流。
作者2017年1月
第一部分大數(shù)據(jù)概述及基礎(chǔ)
第1章大數(shù)據(jù)概念和發(fā)展背景
1.1什么是大數(shù)據(jù)
1.2大數(shù)據(jù)的特點(diǎn)
1.3大數(shù)據(jù)的發(fā)展
1.4大數(shù)據(jù)的應(yīng)用
1.5習(xí)題
第2章大數(shù)據(jù)系統(tǒng)架構(gòu)概述
2.1總體架構(gòu)概述
2.1.1總體架構(gòu)設(shè)計原則
2.1.2總體架構(gòu)參考模型
2.2運(yùn)行架構(gòu)概述
2.2.1物理架構(gòu)
2.2.2集成架構(gòu)
2.2.3安全架構(gòu)
2.3阿里云飛天系統(tǒng)體系架構(gòu)
2.3.1阿里云飛天整體架構(gòu)
2.3.2阿里云飛天平臺內(nèi)核
2.3.3阿里云飛天開放服務(wù)
2.3.4阿里云飛天的特色
2.4主流大數(shù)據(jù)系統(tǒng)廠商
2.4.1阿里云數(shù)加平臺
2.4.2Cloudera
2.4.3Hortonworks
2.4.4Amazon
2.4.5Google
2.4.6微軟
2.5習(xí)題
第3章分布式通信與協(xié)同
3.1數(shù)據(jù)編碼傳輸
3.1.1數(shù)據(jù)編碼概述
3.1.2LZSS算法
3.1.3Snappy壓縮庫
3.2分布式通信系統(tǒng)
3.2.1遠(yuǎn)程過程調(diào)用
3.2.2消息隊列
3.2.3應(yīng)用層多播通信
3.2.4阿里云夸父RPC系統(tǒng)
3.2.5Hadoop IPC的應(yīng)用
3.3分布式協(xié)同系統(tǒng)
3.3.1Chubby鎖服務(wù)
3.3.2ZooKeeper
3.3.3阿里云女媧協(xié)同系統(tǒng)
3.3.4ZooKeeper在HDFS高可用方案中的使用
3.4習(xí)題
第4章大數(shù)據(jù)存儲
4.1大數(shù)據(jù)存儲技術(shù)的發(fā)展
4.2海量數(shù)據(jù)存儲的關(guān)鍵技術(shù)
4.2.1數(shù)據(jù)分片與路由
4.2.2數(shù)據(jù)復(fù)制與一致性
4.3重要數(shù)據(jù)結(jié)構(gòu)和算法
4.3.1Bloom Filter
4.3.2LSM Tree
4.3.3Merkle Tree
4.3.4Cuckoo Hash
4.4分布式文件系統(tǒng)
4.4.1文件存儲格式
4.4.2GFS
4.4.3HDFS
4.4.4阿里云盤古
4.5分布式數(shù)據(jù)庫NoSQL
4.5.1NoSQL數(shù)據(jù)庫概述
4.5.2KV數(shù)據(jù)庫
4.5.3列式數(shù)據(jù)庫
4.5.4圖數(shù)據(jù)庫
4.5.5文檔數(shù)據(jù)庫
4.6阿里云數(shù)據(jù)庫
4.6.1云數(shù)據(jù)庫Redis
4.6.2云數(shù)據(jù)庫RDS
4.6.3云數(shù)據(jù)庫Memcache
4.7大數(shù)據(jù)存儲技術(shù)的趨勢
4.8習(xí)題
第二部分大數(shù)據(jù)處理
第5章分布式處理
5.1CPU多核和POSIX Thread
5.2MPI并行計算框架
5.3Hadoop MapReduce
5.4Spark
5.5數(shù)據(jù)處理技術(shù)的發(fā)展
5.6習(xí)題
第6章Hadoop MapReduce解析
6.1Hadoop MapReduce架構(gòu)
6.2Hadoop MapReduce與高效能計算、網(wǎng)格計算的區(qū)別
6.3MapReduce工作機(jī)制
6.3.1Map
6.3.2Reduce
6.3.3Combine
6.3.4Shuffle
6.3.5Speculative Task
6.3.6任務(wù)容錯
6.4應(yīng)用案例
6.4.1WordCount
6.4.2WordMean
6.4.3Grep
6.5MapReduce的缺陷與不足
6.6習(xí)題
第5章分布式處理
5.1CPU多核和POSIX Thread
為了提高任務(wù)的計算處理能力,下面分別從硬件和軟件層面研究新的計算處理能力。
在硬件設(shè)備上,CPU技術(shù)不斷發(fā)展,出現(xiàn)了SMP(對稱多處理器)和NUMA(非一致性內(nèi)存訪問)兩種高速處理的CPU結(jié)構(gòu)。處理器性能的提升給大量的任務(wù)處理提供了很大的發(fā)展空間。圖5.1是SMP和NUMA結(jié)構(gòu)的CPU,CPU核數(shù)的增加帶來了計算能力的提高,但是也隨之帶來了大量的問題需要解決,比如CPU緩存一致性問題、NUMA內(nèi)存分配策略等,目前已經(jīng)有比較不錯的解決方案。
圖5.1SMP和NUMA架構(gòu)CPU
在軟件層面出現(xiàn)了多進(jìn)程和多線程編程。進(jìn)程是內(nèi)存資源管理單元,線程是任務(wù)調(diào)度單元。圖5.2是進(jìn)程和線程之間的區(qū)別。
圖5.2進(jìn)程與線程
總的來說,線程所占用的資源更少,運(yùn)行一個線程所需要的資源包括寄存器、棧、程序計數(shù)器等。早期不同廠商提供了不同的多線程編寫庫,這些線程庫差異巨大,為了統(tǒng)一多種不同的多線程庫,共同制定了POSIX Thread多線程編程標(biāo)準(zhǔn),以充分利用多個不同的線程庫。組成POSIX Thread的API分成以下4個大類:
。1) 線程管理。線程管理主要負(fù)責(zé)線程的create、detach、join等,也包括線程屬性的查詢和設(shè)置。
。2) mutexes。處理同步的例程(routine)稱為mutex,mutex提供了create、destroy、lock和unlock等函數(shù)。
。3) 條件變量。條件變量主要用于多個線程之間的通信和協(xié)調(diào)。
(4) 同步。同步用于管理讀/寫鎖以及barriers。
5.2MPI并行計算框架
MPI(Message Passing Interface)是一個標(biāo)準(zhǔn)且可移植的消息傳遞系統(tǒng),服務(wù)于大規(guī)模的并行計算。MPI標(biāo)準(zhǔn)定義了采用C、C++、Fortran語言編寫程序的函數(shù)語法和語義。目前有很多經(jīng)過良好測試和高效率的關(guān)于MPI的實(shí)現(xiàn),廣泛采用的實(shí)現(xiàn)有MPICH。下面以MPICH為例展開對MPI的講解。
MPICH是一個高性能且可以廣泛移植的MPI實(shí)現(xiàn)。圖5.3為MPICH的架構(gòu)圖。
圖5.3MPICH架構(gòu)
如圖5.3所示,應(yīng)用程序通過MPI結(jié)構(gòu)連接到MPICH接口層,圖中的ROMIO是MPI.IO的具體實(shí)現(xiàn)版本,對應(yīng)MPI標(biāo)準(zhǔn)中的高性能實(shí)現(xiàn)。MPICH包括ADI3、CH3 Device、CH3 Interface、Nemesis、Nemesis NetMod Interface。
(1) ADI3。ADI是抽象設(shè)備接口(abstract device interface),MPICH通過ADI3接口層隔離底層的具體設(shè)備。
。2) CH3 Device。CH3 Device是ADI3的一個具體實(shí)現(xiàn),使用了相對少數(shù)目的函數(shù)功能。在CH3 Device實(shí)現(xiàn)了多個通信channel,channel提供了兩個MPI進(jìn)程之間傳遞數(shù)據(jù)的途徑以及進(jìn)程通信。當(dāng)前包括兩個channel,即Nemesis和Sock,其中Sock是一個基于UNIX Socket的channel,而Nemesis支持多種方法,不僅僅局限于Socket通信。
。3) CH3 Interface。CH3 Inferface用于定義訪問Nemesis的接口規(guī)范。
(4) Nemesis。Nemesis允許兩個MPI進(jìn)程之間的網(wǎng)絡(luò)通信采取多種方法,包括TCP、InfiniBand等。
5.3Hadoop MapReduce
Hadoop是一個由Apache基金會開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu)。Hadoop框架*核心的設(shè)計就是HDFS和MapReduce,HDFS為海量的數(shù)據(jù)提供了存儲,而MapReduce為海量的數(shù)據(jù)提供了計算。
HDFS(Hadoop Distributed File System)有高容錯性的特點(diǎn),并且設(shè)計用來部署在低廉的硬件上; 而且它提供高吞吐量來訪問應(yīng)用程序的數(shù)據(jù),適合有著超大數(shù)據(jù)集的應(yīng)用程序。HDFS放寬了POSIX的要求,可以用流的形式訪問文件系統(tǒng)中的數(shù)據(jù)。
MapReduce是Google公司提出的一個軟件框架,用于大規(guī)模數(shù)據(jù)集(大于1TB)的并行運(yùn)算!癕ap”和“Reduce”概念以及它們的主要思想都是從函數(shù)式編程語言借來的,還有從矢量編程語言借來的特性。
當(dāng)前的軟件實(shí)現(xiàn)是指定一個Map函數(shù),用來把一組鍵值對映射成一組新的鍵值對,指定并發(fā)的Reduce函數(shù),用來保證所有映射的鍵值對中的每一個共享相同的鍵組。
處理流程如下:
。1) MapReduce框架將應(yīng)用的輸入數(shù)據(jù)切分成M個模塊,典型的數(shù)據(jù)塊大小為64MB。
。2) 具有全局*的主控Master以及若干個Worker,Master負(fù)責(zé)為Worker分配具體的Map或Reduce任務(wù)并做全局管理。
。3) Map任務(wù)的Worker讀取對應(yīng)的數(shù)據(jù)塊內(nèi)容,從數(shù)據(jù)塊中解析Key/Value記錄數(shù)據(jù)并將其傳給用戶自定義的Map函數(shù),Map函數(shù)輸出的中間結(jié)果Key/Value數(shù)據(jù)在內(nèi)存中緩存。
。4) 緩存的Map函數(shù)產(chǎn)生的中間結(jié)果周期性地寫入磁盤,每個Map函數(shù)中間結(jié)果在寫入磁盤前被分割函數(shù)切割成R份,R是Reduce的個數(shù)。一般用Key對R進(jìn)行哈希取模。Map函數(shù)完成對應(yīng)數(shù)據(jù)塊處理后將R個臨時文件位置通知Master,Master再轉(zhuǎn)交給Reduce任務(wù)的Worker。
(5) Reduce任務(wù)Worker接到通知時將Map產(chǎn)生的M份數(shù)據(jù)文件pull到本地(當(dāng)且僅當(dāng)所有Map函數(shù)完成時Reduce函數(shù)才能執(zhí)行)。Reduce任務(wù)根據(jù)中間數(shù)據(jù)的Key對記錄進(jìn)行排序,相同Key的記錄聚合在一起。
。6) 所有Map、Reduce任務(wù)完成,Master喚醒用戶應(yīng)用程序。
5.4Spark
Spark是UC Berkeley AMP Lab所開源的類Hadoop MapReduce的通用的并行計算框架,Spark基于Map.Reduce算法實(shí)現(xiàn)的分布式計算,擁有Hadoop MapReduce所具有的優(yōu)點(diǎn); 不同于MapReduce的是中間輸出和結(jié)果可以保存在內(nèi)存中,從而不再需要讀/寫HDFS,因此Spark能更好地適用于數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)等需要迭代的Map.Reduce的算法。
Spark*主要的結(jié)構(gòu)是RDD(Resilient Distributed Datasets),它表示已被分區(qū)、不可變的并能夠被并行操作的數(shù)據(jù)集合,不同的數(shù)據(jù)集格式對應(yīng)不同的RDD實(shí)現(xiàn)。RDD必須是可序列化的。RDD可以緩存到內(nèi)存中,每次對RDD數(shù)據(jù)集操作之后的結(jié)果都可以存放到內(nèi)存中,下一個操作可以直接從內(nèi)存中輸入,省去了MapReduce大量的磁盤I/O操作。這很適合迭代運(yùn)算比較常見的機(jī)器學(xué)習(xí)算法、交互式數(shù)據(jù)挖掘。
與Hadoop類似,Spark支持單節(jié)點(diǎn)集群或多節(jié)點(diǎn)集群。對于多節(jié)點(diǎn)操作,Spark可以采用自己的資源管理器,也可以采用Mesos集群管理器來管理資源。Mesos為分布式應(yīng)用程序的資源共享和隔離提供了一個有效平臺(參見圖5.4)。該設(shè)置允許Spark與Hadoop共存于節(jié)點(diǎn)的一個共享池中。
圖5.4Mesos集群管理器
5.5數(shù)據(jù)處理技術(shù)的發(fā)展
數(shù)據(jù)處理從早期的共享分時單CPU操作系統(tǒng)處理到多核并發(fā)處理,每臺計算機(jī)設(shè)備的處理能力在不斷增強(qiáng),處理的任務(wù)復(fù)雜度在不斷增加,任務(wù)的處理時間在不斷減少。
然而,隨著大數(shù)據(jù)技術(shù)的不斷發(fā)展,一臺計算設(shè)備無法勝任目前大數(shù)據(jù)計算的龐大的計算工作。為了解決單臺計算機(jī)無法處理大規(guī)模數(shù)據(jù)計算的問題,連接多臺計算機(jī)設(shè)備整合成一個統(tǒng)一的計算系統(tǒng),對外提供計算服務(wù)。早期Google公司的分布式計算框架MapReduce采用的思想就是連接多臺廉價的計算設(shè)備,以此來提供進(jìn)行大規(guī)模計算任務(wù)的能力。但是MapReduce是建立在磁盤之上的并行計算框架,由于機(jī)械磁盤本身的局限性,MapReduce仍然有很大的計算延遲。Spark提出了把計算結(jié)果存放在內(nèi)存中,利用內(nèi)存作為存儲介質(zhì)的方法極大地縮短了系統(tǒng)的響應(yīng)時間,降低了計算任務(wù)返回結(jié)果的延遲。為了滿足大規(guī)模機(jī)器學(xué)習(xí)計算任務(wù)的需求,也設(shè)計了大量的分布式機(jī)器學(xué)習(xí)框架來訓(xùn)練機(jī)器模型參數(shù),比如Parameter Server;針對圖計算場合,Google公司設(shè)計實(shí)現(xiàn)了Pregel圖計算框架,用于處理*短路徑、Dijstra等經(jīng)典圖計算任務(wù); 為了滿足實(shí)時計算任務(wù)需求,設(shè)計實(shí)現(xiàn)了流計算框架,比如Spark Streaming、Storm、Flink等實(shí)時計算框架。
總之,目前處理技術(shù)在往大規(guī)模、低延遲方向發(fā)展,內(nèi)存空間的擴(kuò)大以及內(nèi)存存儲成本的降低給大規(guī)模數(shù)據(jù)處理提供了極好的發(fā)展契機(jī)。
5.6習(xí)題
1. 簡述CPU技術(shù)的發(fā)展趨勢。
2. 簡述MPICH并行計算框架。
3. 簡述MapReduce的原理。
……