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