編輯推薦
本書詳細介紹瞭大數據的基本概念、原理與方法,以及通過大數據實踐來講述大數據技術的應用,包括如何運用阿裏雲大數據計算平颱解決和分析實際的問題。本書*後還提供瞭大數據實踐案例,完整地體現瞭理論與實踐的有機結閤。
內容簡介
本書從大數據的基本概念開始,由淺入深地領會大數據的精髓。本書除瞭講述必要的大數據理論之外,還通過大數據實踐來講述大數據技術的應用,包括如何運用阿裏雲大數據計算平颱分析和解決實際問題,很好地體現瞭大數據理論與實踐的有機結閤。
本書分為三大部分,分彆是大數據概述及基礎、大數據處理和大數據分析與應用。其中,大數據概述及基礎部分重點介紹數據組織、重要數據結構、大數據協同技術以及大數據存儲技術等內容; 大數據處理部分重點介紹大數據處理框架,包括大數據批處理和流處理框架等內容; 大數據分析與應用部分重點介紹數據分析技術和機器學習的相關內容,以及如何利用阿裏雲的數加平颱進行基本的大數據開發工作。
本書既可以作為高等院校計算機科學、軟件工程及相關專業“大數據”課程的教材,也可以供係統分析師、係統架構師、軟件開發工程師和項目經理,以及其他準備或正在學習大數據技術的讀者(包括參加計算機等級考試或相關專業自學考試的人員)閱讀和參考。
內頁插圖
目錄
第一部分大數據概述及基礎
第1章大數據概念和發展背景
1.1什麼是大數據
1.2大數據的特點
1.3大數據的發展
1.4大數據的應用
1.5習題
第2章大數據係統架構概述
2.1總體架構概述
2.1.1總體架構設計原則
2.1.2總體架構參考模型
2.2運行架構概述
2.2.1物理架構
2.2.2集成架構
2.2.3安全架構
2.3阿裏雲飛天係統體係架構
2.3.1阿裏雲飛天整體架構
2.3.2阿裏雲飛天平颱內核
2.3.3阿裏雲飛天開放服務
2.3.4阿裏雲飛天的特色
2.4主流大數據係統廠商
2.4.1阿裏雲數加平颱
2.4.2Cloudera
2.4.3Hortonworks
2.4.4Amazon
2.4.5Google
2.4.6微軟
2.5習題
第3章分布式通信與協同
3.1數據編碼傳輸
3.1.1數據編碼概述
3.1.2LZSS算法
3.1.3Snappy壓縮庫
3.2分布式通信係統
3.2.1遠程過程調用
3.2.2消息隊列
3.2.3應用層多播通信
3.2.4阿裏雲誇父RPC係統
3.2.5Hadoop IPC的應用
3.3分布式協同係統
3.3.1Chubby鎖服務
3.3.2ZooKeeper
3.3.3阿裏雲女媧協同係統
3.3.4ZooKeeper在HDFS高可用方案中的使用
3.4習題
第4章大數據存儲
4.1大數據存儲技術的發展
4.2海量數據存儲的關鍵技術
4.2.1數據分片與路由
4.2.2數據復製與一緻性
4.3重要數據結構和算法
4.3.1Bloom Filter
4.3.2LSM Tree
4.3.3Merkle Tree
4.3.4Cuckoo Hash
4.4分布式文件係統
4.4.1文件存儲格式
4.4.2GFS
4.4.3HDFS
4.4.4阿裏雲盤古
4.5分布式數據庫NoSQL
4.5.1NoSQL數據庫概述
4.5.2KV數據庫
4.5.3列式數據庫
4.5.4圖數據庫
4.5.5文檔數據庫
4.6阿裏雲數據庫
4.6.1雲數據庫Redis
4.6.2雲數據庫RDS
4.6.3雲數據庫Memcache
4.7大數據存儲技術的趨勢
4.8習題
第二部分大數據處理
第5章分布式處理
5.1CPU多核和POSIX Thread
5.2MPI並行計算框架
5.3Hadoop MapReduce
5.4Spark
5.5數據處理技術的發展
5.6習題
第6章Hadoop MapReduce解析
6.1Hadoop MapReduce架構
6.2Hadoop MapReduce與高效能計算、網格計算的區彆
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技術不斷發展,齣現瞭SMP(對稱多處理器)和NUMA(非一緻性內存訪問)兩種高速處理的CPU結構。處理器性能的提升給大量的任務處理提供瞭很大的發展空間。圖5.1是SMP和NUMA結構的CPU,CPU核數的增加帶來瞭計算能力的提高,但是也隨之帶來瞭大量的問題需要解決,比如CPU緩存一緻性問題、NUMA內存分配策略等,目前已經有比較不錯的解決方案。
圖5.1SMP和NUMA架構CPU
在軟件層麵齣現瞭多進程和多綫程編程。進程是內存資源管理單元,綫程是任務調度單元。圖5.2是進程和綫程之間的區彆。
圖5.2進程與綫程
總的來說,綫程所占用的資源更少,運行一個綫程所需要的資源包括寄存器、棧、程序計數器等。早期不同廠商提供瞭不同的多綫程編寫庫,這些綫程庫差異巨大,為瞭統一多種不同的多綫程庫,共同製定瞭POSIX Thread多綫程編程標準,以充分利用多個不同的綫程庫。組成POSIX Thread的API分成以下4個大類:
(1) 綫程管理。綫程管理主要負責綫程的create、detach、join等,也包括綫程屬性的查詢和設置。
(2) mutexes。處理同步的例程(routine)稱為mutex,mutex提供瞭create、destroy、lock和unlock等函數。
(3) 條件變量。條件變量主要用於多個綫程之間的通信和協調。
(4) 同步。同步用於管理讀/寫鎖以及barriers。
5.2MPI並行計算框架
MPI(Message Passing Interface)是一個標準且可移植的消息傳遞係統,服務於大規模的並行計算。MPI標準定義瞭采用C、C++、Fortran語言編寫程序的函數語法和語義。目前有很多經過良好測試和高效率的關於MPI的實現,廣泛采用的實現有MPICH。下麵以MPICH為例展開對MPI的講解。
MPICH是一個高性能且可以廣泛移植的MPI實現。圖5.3為MPICH的架構圖。
圖5.3MPICH架構
如圖5.3所示,應用程序通過MPI結構連接到MPICH接口層,圖中的ROMIO是MPI.IO的具體實現版本,對應MPI標準中的高性能實現。MPICH包括ADI3、CH3 Device、CH3 Interface、Nemesis、Nemesis NetMod Interface。
(1) ADI3。ADI是抽象設備接口(abstract device interface),MPICH通過ADI3接口層隔離底層的具體設備。
(2) CH3 Device。CH3 Device是ADI3的一個具體實現,使用瞭相對少數目的函數功能。在CH3 Device實現瞭多個通信channel,channel提供瞭兩個MPI進程之間傳遞數據的途徑以及進程通信。當前包括兩個channel,即Nemesis和Sock,其中Sock是一個基於UNIX Socket的channel,而Nemesis支持多種方法,不僅僅局限於Socket通信。
(3) CH3 Interface。CH3 Inferface用於定義訪問Nemesis的接口規範。
(4) Nemesis。Nemesis允許兩個MPI進程之間的網絡通信采取多種方法,包括TCP、InfiniBand等。
5.3Hadoop MapReduce
Hadoop是一個由Apache基金會開發的分布式係統基礎架構。Hadoop框架*核心的設計就是HDFS和MapReduce,HDFS為海量的數據提供瞭存儲,而MapReduce為海量的數據提供瞭計算。
HDFS(Hadoop Distributed File System)有高容錯性的特點,並且設計用來部署在低廉的硬件上; 而且它提供高吞吐量來訪問應用程序的數據,適閤有著超大數據集的應用程序。HDFS放寬瞭POSIX的要求,可以用流的形式訪問文件係統中的數據。
MapReduce是Google公司提齣的一個軟件框架,用於大規模數據集(大於1TB)的並行運算。“Map”和“Reduce”概念以及它們的主要思想都是從函數式編程語言藉來的,還有從矢量編程語言藉來的特性。
當前的軟件實現是指定一個Map函數,用來把一組鍵值對映射成一組新的鍵值對,指定並發的Reduce函數,用來保證所有映射的鍵值對中的每一個共享相同的鍵組。
處理流程如下:
(1) MapReduce框架將應用的輸入數據切分成M個模塊,典型的數據塊大小為64MB。
(2) 具有全局*的主控Master以及若乾個Worker,Master負責為Worker分配具體的Map或Reduce任務並做全局管理。
(3) Map任務的Worker讀取對應的數據塊內容,從數據塊中解析Key/Value記錄數據並將其傳給用戶自定義的Map函數,Map函數輸齣的中間結果Key/Value數據在內存中緩存。
(4) 緩存的Map函數産生的中間結果周期性地寫入磁盤,每個Map函數中間結果在寫入磁盤前被分割函數切割成R份,R是Reduce的個數。一般用Key對R進行哈希取模。Map函數完成對應數據塊處理後將R個臨時文件位置通知Master,Master再轉交給Reduce任務的Worker。
(5) Reduce任務Worker接到通知時將Map産生的M份數據文件pull到本地(當且僅當所有Map函數完成時Reduce函數纔能執行)。Reduce任務根據中間數據的Key對記錄進行排序,相同Key的記錄聚閤在一起。
(6) 所有Map、Reduce任務完成,Master喚醒用戶應用程序。
5.4Spark
Spark是UC Berkeley AMP Lab所開源的類Hadoop MapReduce的通用的並行計算框架,Spark基於Map.Reduce算法實現的分布式計算,擁有Hadoop MapReduce所具有的優點; 不同於MapReduce的是中間輸齣和結果可以保存在內存中,從而不再需要讀/寫HDFS,因此Spark能更好地適用於數據挖掘與機器學習等需要迭代的Map.Reduce的算法。
Spark*主要的結構是RDD(Resilient Distributed Datasets),它錶示已被分區、不可變的並能夠被並行操作的數據集閤,不同的數據集格式對應不同的RDD實現。RDD必須是可序列化的。RDD可以緩存到內存中,每次對RDD數據集操作之後的結果都可以存放到內存中,下一個操作可以直接從內存中輸入,省去瞭MapReduce大量的磁盤I/O操作。這很適閤迭代運算比較常見的機器學習算法、交互式數據挖掘。
與Hadoop類似,Spark支持單節點集群或多節點集群。對於多節點操作,Spark可以采用自己的資源管理器,也可以采用Mesos集群管理器來管理資源。Mesos為分布式應用程序的資源共享和隔離提供瞭一個有效平颱(參見圖5.4)。該設置允許Spark與Hadoop共存於節點的一個共享池中。
圖5.4Mesos集群管理器
5.5數據處理技術的發展
數據處理從早期的共享分時單CPU操作係統處理到多核並發處理,每颱計算機設備的處理能力在不斷增強,處理的任務復雜度在不斷增加,任務的處理時間在不斷減少。
然而,隨著大數據技術的不斷發展,一颱計算設備無法勝任目前大數據計算的龐大的計算工作。為瞭解決單颱計算機無法處理大規模數據計算的問題,連接多颱計算機設備整閤成一個統一的計算係統,對外提供計算服務。早期Google公司的分布式計算框架MapReduce采用的思想就是連接多颱廉價的計算設備,以此來提供進行大規模計算任務的能力。但是MapReduce是建立在磁盤之上的並行計算框架,由於機械磁盤本身的局限性,MapReduce仍然有很大的計算延遲。Spark提齣瞭把計算結果存放在內存中,利用內存作為存儲介質的方法極大地縮短瞭係統的響應時間,降低瞭計算任務返迴結果的延遲。為瞭滿足大規模機器學習計算任務的需求,也設計瞭大量的分布式機器學習框架來訓練機器模型參數,比如Parameter Server;針對圖計算場閤,Google公司設計實現瞭Pregel圖計算框架,用於處理*短路徑、Dijstra等經典圖計算任務; 為瞭滿足實時計算任務需求,設計實現瞭流計算框架,比如Spark Streaming、Storm、Flink等實時計算框架。
總之,目前處理技術在往大規模、低延遲方嚮發展,內存空間的擴大以及內存存儲成本的降低給大規模數據處理提供瞭極好的發展契機。
5.6習題
1. 簡述CPU技術的發展趨勢。
2. 簡述MPICH並行計算框架。
3. 簡述MapReduce的原理。
……
前言/序言
互聯網技術不斷發展,各種技術不斷湧現,其中大數據技術已成為一顆閃耀的新星。我們已經處於數據世界,互聯網每天産生大量的數據,利用好這些數據可以給我們的生活帶來巨大的變化以及提供極大的便利。目前大數據技術受到越來越多的機構的重視,因為大數據技術可以給其創造巨大的利潤,其中的典型代錶是個性化推薦以及大數據精準營銷。
本書在講述大數據的基本概念、原理與方法的基礎上,詳細而全麵地介紹瞭可以實際用於大數據實踐的各種技能,旨在使學生通過有限課時的學習後,不僅能對大數據技術的基本原理有所認識,而且能夠具備基本的大數據技術開發能力以及運用大數據技術解決基本的數據分析問題,理解大數據框架(尤其是阿裏雲大數據計算平颱),在阿裏雲大數據平颱上進行基本的大數據開發工作的能力。
本書分為三大部分,分彆是大數據概述及基礎、大數據處理和大數據分析與應用。其中,大數據概述及基礎部分重點介紹數據組織、重要數據結構、大數據協同技術以及大數據存儲技術等內容; 大數據處理部分重點介紹大數據處理框架,包括大數據批處理和流處理框架等內容; 大數據分析與應用部分重點介紹數據分析技術和機器學習的相關內容,以及如何利用阿裏雲的數加平颱進行基本的大數據開發工作。
本書與其他類似著作的不同之處在於,除瞭講述必要的大數據理論之外,還通過大數據實踐來講述大數據技術的應用,包括如何運用阿裏雲大數據計算平颱解決和分析實際的問題,如阿裏雲MaxCompute和StreamCompute等。本書的*後一章“大數據實踐: 基於數加平颱的推薦係統”是學生在做課程設計時可供模仿的一個項目,它完整地體現瞭理論與實踐的有機結閤。
本書的理論知識的教學安排建議如下。
章節內容學時數
第1章大數據概念和發展背景1
第2章大數據係統架構概述1~2
第3章分布式通信與協同2~4
第4章大數據存儲4~6
第5章分布式處理2
第6章Hadoop MapReduce解析2~4
第7章Spark解析2~4
第8章流計算2
第9章圖計算2
第10章阿裏雲大數據計算服務平颱2
第11章集群資源管理與調度4~6
第12章數據分析2~4
第13章數據挖掘與機器學習技術2~4
第14章大數據實踐: 基於數加平颱的推薦係統4~5
建議理論教學時數: 32~48學時。
建議實驗(實踐)教學時數: 16~32學時。
教師可以按照自己對大數據的理解適當地刪除一些章節,也可以根據教學目標,靈活地調整章節的順序,增減各章的學時數。
在本書成書的過程中,得到瞭萬昭禕、李旭、蘇俊洋以及阿裏巴巴的李妹芳等人的大力支持,在此錶示衷心的感謝。
由於大數據是一門新興學科,大數據的教學方法本身還在探索之中,加之我們的水平和能力有限,本書難免有疏漏之處。懇請各位同仁和廣大讀者給予批評指正,也希望各位能將實踐過程中的經驗和心得與我們交流。
作者2017年1月
大數據基礎及應用/大數據技術與應用專業規劃教材 epub pdf mobi txt 電子書 下載 2024
大數據基礎及應用/大數據技術與應用專業規劃教材 下載 epub mobi pdf txt 電子書