高性能分布式計算系統(tǒng)開發(fā)與實現(xiàn):基于Hadoop、Scalding和Spark
定 價:69 元
叢書名:華章IT
- 作者:[印度] 斯里尼瓦沙(Srinivasa, K.G.), 阿尼爾·庫馬爾·穆帕拉(Anil Kumar Muppal
- 出版時間:2018/7/1
- ISBN:9787111601531
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP274
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書分兩部分,共8章,介紹了如何使用開源工具和技術(shù)開發(fā)與實現(xiàn)大規(guī)模分布式處理系統(tǒng),涵蓋構(gòu)建高性能分布式計算系統(tǒng)的方法和佳實踐。第 一部分(第1~4章)介紹了高性能分布式計算編程的基礎(chǔ)知識,包括分布式系統(tǒng)、Hadoop入門、Spark入門、Scalding入門等;第二部分(第5~8章)給出了使用Hadoop、Spark、Scalding的案例研究,涉及數(shù)據(jù)聚類、數(shù)據(jù)分類、回歸分析、推薦系統(tǒng)等。本書適合作為高等院校計算機相關(guān)專業(yè)的教材,也適合作為軟件工程師、應(yīng)用開發(fā)人員、科研人員的參考書。
前 言過去的二十年中,隨著計算機的使用越來越廣泛,產(chǎn)生了大量的數(shù)據(jù)。生產(chǎn)與生活中各類設(shè)備和工具的數(shù)字化也促進了數(shù)據(jù)的增長。市場中,對這些龐大且不斷增長的數(shù)據(jù)進行存儲、處理和分析的需求應(yīng)運而生。在硬件層面,每秒進行萬億次浮點運算的高性能計算(HPC)系統(tǒng)可以對龐大的數(shù)據(jù)進行管理。由于單個計算機無法應(yīng)對其操作的復(fù)雜性,因此HPC系統(tǒng)需要在分布式環(huán)境中運行。可以通過兩種趨勢實現(xiàn)萬億次浮點的分布式運算。一種是通過全球網(wǎng)絡(luò)連接計算機,實現(xiàn)復(fù)雜數(shù)據(jù)的分布式管理。另一種是采用專用的處理器,并集中存放,這樣可以縮短機器之間的數(shù)據(jù)傳輸時間。這兩種趨勢正在呈現(xiàn)快速的融合之勢,必然會為浩繁的數(shù)據(jù)處理問題帶來更為迅捷和有效的硬件解決方案。
在軟件層面,Apache Hadoop在解決龐大數(shù)據(jù)的管理問題方面已經(jīng)是久負盛名。Hadoop的生態(tài)系統(tǒng)包括Hadoop分布式文件系統(tǒng)(HDFS)、MapReduce框架(支持多種數(shù)據(jù)格式和數(shù)據(jù)源)、單元測試、對變體和項目進行聚類(如Pig、Hive等)。它能夠?qū)崿F(xiàn)包括存儲和處理在內(nèi)的全生命周期的數(shù)據(jù)管理。Hadoop的優(yōu)勢在于,它通過分布式模塊處理大型數(shù)據(jù)。它還可以處理非結(jié)構(gòu)化數(shù)據(jù),這使其更具吸引力。與HPC骨干網(wǎng)結(jié)合,Hadoop可以使處理海量數(shù)據(jù)的任務(wù)變得非常簡單。
如今,很多高級的Hadoop框架,如Pig、Hive、Scoobi、Scrunch、Cascalog、Scald-ing和Spark,使得Hadoop易于操作。它們中大多數(shù)都得到著名企業(yè)的支持,如Yahoo(Pig)、Facebook(Hive)、Cloudera(Scrunch)和Twitter(Scalding),這說明Hadoop在工業(yè)領(lǐng)域得到了廣泛支持。這些框架使用的是Hadoop的基礎(chǔ)模塊,例如HDFS和MapReduce,但是通過創(chuàng)建一個抽象來隱藏Hadoop模塊的復(fù)雜性,為復(fù)雜的數(shù)據(jù)處理提供了一種簡單的方法。這個抽象的一個例證就是Cascading。許多具體的語言是使用Cascading的框架創(chuàng)建的。其中一個實例就是Twitter的Scalding,它用來查詢存儲在HDFS中的大型數(shù)據(jù)集,如Twitter上的推文。
Hadoop和Scalding中的數(shù)據(jù)存儲大多基于磁盤。這一結(jié)構(gòu)因其較長的數(shù)據(jù)尋道和傳輸時間影響了運行速率。如果數(shù)據(jù)從磁盤中讀取然后保持在內(nèi)存中,運行速率會提高數(shù)倍。Spark實現(xiàn)了這一概念,并宣稱其效率較之MapReduce在內(nèi)存中快100倍,在磁盤上快10倍。Spark使用了彈性分布式數(shù)據(jù)集的基本抽象,這些數(shù)據(jù)集是分布式的不可變集合。由于Spark將數(shù)據(jù)存儲在內(nèi)存中,因此迭代算法可以在數(shù)據(jù)挖掘和機器學習方面更有效地發(fā)揮作用。
目標本書旨在介紹使用自由和開放源碼的工具和技術(shù)(如Hadoop、Scalding、Spark等)構(gòu)建分布式處理系統(tǒng)的方法,關(guān)鍵目標包括以下幾點。
使讀者掌握當前使用Hadoop、Scalding和Spark構(gòu)建高性能分布式計算系統(tǒng)的新發(fā)展。
為讀者提供相關(guān)理論的軟件框架和實踐途徑。
為學生和實踐者使用自由及開放源碼軟件技術(shù)(如Hadoop、Scalding和Spark)提供指導(dǎo)和實例。
使讀者加深對與高性能分布式計算(HPDC)相關(guān)的新興范式在構(gòu)建可擴展軟件系統(tǒng)以供大規(guī)模數(shù)據(jù)處理方面的理解。
本書結(jié)構(gòu)本書共8章,分成兩部分,各章內(nèi)容概述如下。
第一部分 高性能分布式計算編程基礎(chǔ)第1章闡述構(gòu)成現(xiàn)代HPDC范式(如云計算、網(wǎng)格和集群系統(tǒng)等)主體的分布式系統(tǒng)的基本知識。從討論各種形式的分布式系統(tǒng)開始,解析它們的通用架構(gòu),也談及其設(shè)計的核心,即分布式文件系統(tǒng)。此外,還通過相關(guān)的示例說明其在發(fā)展過程中遇到的技術(shù)難題和該領(lǐng)域近年來的發(fā)展趨勢。
第2章概述Hadoop生態(tài)系統(tǒng),一步步地介紹系統(tǒng)的安裝、編程和實現(xiàn)。第3章描述Spark的核心—彈性分布式數(shù)據(jù)集,談及其安裝、API編程,并給出一些范例。第4章重點闡述Hadoop流,也涉及Scalding的應(yīng)用,并討論Python在Hadoop和Spark中的應(yīng)用。
第二部分 使用Hadoop、Scalding和Spark的案例研究本書并不局限于解釋基本的理論常識,它的優(yōu)勢在于提供了程序范例。書中給出四個案例,內(nèi)容涉及很多應(yīng)用領(lǐng)域和計算方法,足以令懷疑論者變成Scalding和Spark的信眾。第5章講述K均值聚類算法的實現(xiàn),第6章講述使用樸素貝葉斯分類器進行數(shù)據(jù)分類。第7章進一步闡述使用Scalding和Spark的分布式系統(tǒng)中進行數(shù)據(jù)挖掘和機器學習的方法,并概述回歸分析。
當前,推薦系統(tǒng)在諸多領(lǐng)域都非常受歡迎。它自動充當了兩個不相交實體的中間人,在購物、檢索、出版領(lǐng)域的現(xiàn)代網(wǎng)絡(luò)應(yīng)用中正日趨流行。一個可運行的推薦系統(tǒng)不僅需要有強大的計算引擎,還應(yīng)該能夠?qū)崟r擴展。第8章闡釋使用Scalding和Spark創(chuàng)建這樣一個推薦系統(tǒng)的過程。
目標受眾本書的目標受眾主要包括:
軟件工程師和應(yīng)用開發(fā)者學生和大學講師自由和開放源碼軟件的貢獻者研究人員代碼庫書中使用的源碼和數(shù)據(jù)集可以從https://github.com/4ni1/hpdc-scalding-spark下載。
致謝感謝以下人員在本書的準備過程中提供的支持和幫助:
M. S.拉邁阿理工學院董事M. R. Seetharam先生M. S.拉邁阿理工學院董事M. R. Ramaiah先生M. S.拉邁阿理工學院行政主管S. M. Acharya先生M. S.拉邁阿理工學院院長S. Y. Kulkarni博士M. S.拉邁阿
K.G.斯里尼瓦沙(K.G.Srinivasa)于2007年獲得班加羅爾大學計算機科學與工程博士學位。現(xiàn)就職于班加羅爾的M.S.拉邁阿理工學院計算機科學與工程系,任教授兼主任。他在國際會議和期刊上共發(fā)表過一百多篇研究論文,曾作為訪問學者出訪過許多大學。他是UGC、DRDO和DST資助的多個項目的首席研究員,其研究領(lǐng)域包括數(shù)據(jù)挖掘、機器學習、高性能計算和云計算。他是IEEE和ACM的高級成員。
阿尼爾·庫馬爾·穆帕拉(Anil Kumar Muppalla)既是一位研究者也是一個作家。具有計算機科學和工程學學位。他是很多行業(yè)的軟件開發(fā)者和顧問。他是活躍的研究者,并在國際會議和期刊上發(fā)表諸多文章。他研究的方向包括使用Hadoop、Scalding和Spark進行應(yīng)用開發(fā)。
目 錄
譯者序
前言
作者簡介
第一部分 高性能分布式計算編程基礎(chǔ)
第1章 引言2
1.1 分布式系統(tǒng)2
1.2 分布式系統(tǒng)類型5
1.2.1 分布式嵌入式系統(tǒng)5
1.2.2 分布式信息系統(tǒng)7
1.2.3 分布式計算系統(tǒng)8
1.3 分布式計算架構(gòu)9
1.4 分布式文件系統(tǒng)10
1.4.1 分布式文件系統(tǒng)需求10
1.4.2 分布式文件系統(tǒng)架構(gòu)11
1.5 分布式系統(tǒng)面臨的挑戰(zhàn)13
1.6 分布式系統(tǒng)的發(fā)展趨勢16
1.7 高性能分布式計算系統(tǒng)示例18
參考文獻20
第2章 Hadoop入門22
2.1 Hadoop簡介22
2.2 Hadoop生態(tài)系統(tǒng)24
2.3 Hadoop分布式文件系統(tǒng)26
2.3.1 HDFS的特性26
2.3.2 名稱節(jié)點和數(shù)據(jù)節(jié)點27
2.3.3 文件系統(tǒng)28
2.3.4 數(shù)據(jù)復(fù)制28
2.3.5 通信30
2.3.6 數(shù)據(jù)組織30
2.4 MapReduce準備工作31
2.5 安裝前的準備33
2.6 單節(jié)點集群的安裝35
2.7 多節(jié)點集群的安裝38
2.8 Hadoop編程45
2.9 Hadoop流48
參考文獻51
第3章 Spark入門53
3.1 Spark簡介53
3.2 Spark內(nèi)部結(jié)構(gòu)54
3.3 Spark安裝58
3.3.1 安裝前的準備58
3.3.2 開始使用60
3.3.3 示例:Scala應(yīng)用63
3.3.4 Python下Spark的使用65
3.3.5 示例:Python應(yīng)用67
3.4 Spark部署68
3.4.1 應(yīng)用提交68
3.4.2 單機模式70
參考文獻72
第4章 Scalding和Spark的內(nèi)部編程74
4.1 Scalding簡介74
4.1.1 安裝74
4.1.2 編程指南77
4.2 Spark編程指南103
參考文獻120
第二部分 使用Hadoop、Scalding和Spark的案例研究
第5章 案例研究Ⅰ:使用Scalding和Spark進行數(shù)據(jù)聚類122
5.1 簡介122
5.2 聚類122
5.2.1 聚類方法123
5.2.2 聚類處理125
5.2.3 K均值算法125
5.2.4 簡單的K均值示例126
5.3 實現(xiàn)128
問題142
參考文獻142
第6章 案例研究Ⅱ:使用Scalding和Spark進行數(shù)據(jù)分類144
6.1 分類145
6.2 概率論146
6.2.1 隨機變量146
6.2.2 分布146
6.2.3 均值和方差147
6.3 樸素貝葉斯148
6.3.1 概率模型148
6.3.2 參數(shù)估計和事件模型149
6.3.3 示例150
6.4 樸素貝葉斯分類器的實現(xiàn)152
6.4.1 Scalding實現(xiàn)153
6.4.2 結(jié)果166
問題168
參考文獻168
第7章 案例研究Ⅲ:使用Scalding和Spark進行回歸分析169
7.1 回歸分析的步驟169
7.2 實現(xiàn)細節(jié)172
7.2.1 線性回歸:代數(shù)方法173
7.2.2 代數(shù)方法的Scalding實現(xiàn)174
7.2.3 代數(shù)方法的Spark實現(xiàn)179
7.2.4 線性回歸:梯度下降法184
7.2.5 梯度下降法的Scalding實現(xiàn)187
7.2.6 梯度下降法的Spark實現(xiàn)195
問題198
參考文獻199
第8章 案例研究Ⅳ:使用Scalding和Spark實現(xiàn)推薦系統(tǒng)200
8.1 推薦系統(tǒng)200
8.1.1 目標201
8.1.2 推薦系統(tǒng)的數(shù)據(jù)源201
8.1.3 推薦系統(tǒng)中使用的技術(shù)202
8.2 實現(xiàn)細節(jié)204
8.2.1 Spark實現(xiàn)206
8.2.2 Scalding實現(xiàn)221
問題230
參考文獻230
索引233