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