版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第3章 大數(shù)據(jù)存儲(chǔ)與計(jì)算提綱3.1 大數(shù)據(jù)存儲(chǔ)3.2 HDFS文件系統(tǒng)3.3 NoSQL數(shù)據(jù)庫(kù)3.4 Hbase數(shù)據(jù)庫(kù)3.5 大數(shù)據(jù)處理3.6 分布式計(jì)算3.7 MapReduce模型3.8 Spark通用計(jì)算框架大數(shù)據(jù)導(dǎo)論3. 1 大數(shù)據(jù)存儲(chǔ)Big Data(大數(shù)據(jù)技術(shù))作為一個(gè)專(zhuān)有名詞成為熱點(diǎn),主要應(yīng)歸功于近年來(lái)互聯(lián)網(wǎng)、云計(jì)算、移動(dòng)和物聯(lián)網(wǎng)的迅猛發(fā)展。無(wú)所不在的移動(dòng)設(shè)備、RFID、無(wú)線傳感器每分每秒都在產(chǎn)生數(shù)據(jù),數(shù)以億計(jì)用戶的互聯(lián)網(wǎng)服務(wù)時(shí)時(shí)刻刻在產(chǎn)生巨量的交互,要處理的數(shù)據(jù)量實(shí)在是太大、增長(zhǎng)太快了,而業(yè)務(wù)需求和競(jìng)爭(zhēng)壓力對(duì)數(shù)據(jù)處理的實(shí)時(shí)性、有效性又提出了更高要求。 在這種情況下,傳統(tǒng)的常規(guī)技
2、術(shù)針對(duì)大數(shù)據(jù)存儲(chǔ)要求,采取了一些新存儲(chǔ)架構(gòu)和方法,主要包括DAS/NAS/SAN存儲(chǔ)結(jié)構(gòu)。但基于存儲(chǔ)設(shè)備的性能、成本等問(wèn)題的考慮,架構(gòu)基于大規(guī)模分布式計(jì)算(MPP)的GFS/HDFS分布式文件系統(tǒng)、各種NoSQL分布式存儲(chǔ)方案等應(yīng)運(yùn)而生。3.1.1 大數(shù)據(jù)如何存儲(chǔ)1. 結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù)通常是人們所熟悉的數(shù)據(jù)庫(kù)中的數(shù)據(jù),它本身就是一種對(duì)現(xiàn)實(shí)已發(fā)生事項(xiàng)的關(guān)鍵要素進(jìn)行抽取的有價(jià)信息?,F(xiàn)在各類(lèi)企業(yè)和組織都有自己的管理信息系統(tǒng),隨著時(shí)間的推移,數(shù)據(jù)庫(kù)中積累的結(jié)構(gòu)化數(shù)據(jù)越來(lái)越多,一些問(wèn)題顯現(xiàn)出來(lái),這些問(wèn)題可以分為四類(lèi):1)歷史數(shù)據(jù)和當(dāng)前數(shù)據(jù)都存在一個(gè)數(shù)據(jù)庫(kù)中,導(dǎo)致系統(tǒng)處理速度越來(lái)越慢;2)歷史數(shù)據(jù)
3、與當(dāng)前數(shù)據(jù)的期限如何界定;3)歷史數(shù)據(jù)應(yīng)如何存儲(chǔ);4)歷史數(shù)據(jù)的二次增值如何解決。3.1.1 大數(shù)據(jù)如何存儲(chǔ)1. 結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)問(wèn)題1和問(wèn)題2可以一起處理。導(dǎo)致系統(tǒng)處理速度越來(lái)越慢的原因除了傳統(tǒng)的技術(shù)架構(gòu)和當(dāng)初建設(shè)系統(tǒng)的技術(shù)滯后于業(yè)務(wù)發(fā)展之外,最主要的是對(duì)于系統(tǒng)作用的定位問(wèn)題。從過(guò)去30年管理信息系統(tǒng)發(fā)展的歷史來(lái)看,隨著信息技術(shù)的發(fā)展和信息系統(tǒng)領(lǐng)域的不斷細(xì)分,可將信息系統(tǒng)分為兩類(lèi),一類(lèi)是基于目前的數(shù)據(jù)生產(chǎn)管理信息系統(tǒng),一類(lèi)是基于歷史的數(shù)據(jù)應(yīng)用管理信息系統(tǒng)。問(wèn)題3和問(wèn)題4可以放在一起處理。由于歷史數(shù)據(jù)量規(guī)模龐大,相對(duì)穩(wěn)態(tài),其存儲(chǔ)和加工處理與數(shù)據(jù)生產(chǎn)管理系統(tǒng)的思路應(yīng)有很大的不同。結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)是為
4、了分析而存儲(chǔ),采用分布式方式,其目標(biāo)有兩個(gè):一是在海量的數(shù)據(jù)庫(kù)中快速查詢歷史數(shù)據(jù),二是在海量的數(shù)據(jù)庫(kù)中進(jìn)行有價(jià)值信息的分析和挖掘。數(shù)據(jù)科學(xué) 1.數(shù)據(jù)科學(xué)技能和熟練程度 在上表中列出的這25項(xiàng)技能,反映了通常與數(shù)據(jù)科學(xué)家相關(guān)的技能集合。在進(jìn)行針對(duì)數(shù)據(jù)科學(xué)家的調(diào)查中,調(diào)查者要求數(shù)據(jù)專(zhuān)業(yè)人員指出他們?cè)?5項(xiàng)不同數(shù)據(jù)科學(xué)技能上的熟練程度。 這項(xiàng)研究數(shù)據(jù)基于620名被訪的數(shù)據(jù)專(zhuān)業(yè)人士,具備某種技能的百分比反映了指出他在該技能上至少中等熟練程度的被訪問(wèn)者比例職位角色,即:商業(yè)經(jīng)理 = 250;開(kāi)發(fā)人員 = 222;創(chuàng)意人員 = 221;研究人員 = 353。數(shù)據(jù)科學(xué) 2.重要數(shù)據(jù)科學(xué)技能分析表明,所有數(shù)據(jù)
5、專(zhuān)業(yè)人員中最常見(jiàn)的數(shù)據(jù)科學(xué)十大技能是:統(tǒng)計(jì) 溝通(87%)技術(shù) 處理結(jié)構(gòu)化數(shù)據(jù)(75%)數(shù)學(xué)&建模 數(shù)學(xué)(71%)商業(yè) 項(xiàng)目管理(71%)統(tǒng)計(jì) 數(shù)據(jù)挖掘和可視化工具(71%)統(tǒng)計(jì) 科學(xué)/科學(xué)方法(65%)統(tǒng)計(jì) 數(shù)據(jù)管理(65%)商業(yè) 產(chǎn)品設(shè)計(jì)和開(kāi)發(fā)(59%)統(tǒng)計(jì) 統(tǒng)計(jì)學(xué)和統(tǒng)計(jì)建模(59%)商業(yè) 商業(yè)開(kāi)發(fā)(53%)數(shù)據(jù)科學(xué)3.因職業(yè)角色而異的十大技能(1)商業(yè)經(jīng)理:統(tǒng)計(jì)溝通(91%)商業(yè)項(xiàng)目管理(86%)商業(yè)商業(yè)開(kāi)發(fā)(77%)技術(shù)處理結(jié)構(gòu)化數(shù)據(jù)(74%)商業(yè) 預(yù)算(71%)商業(yè) 產(chǎn)品設(shè)計(jì)和開(kāi)發(fā)(70%)數(shù)學(xué)&建模 數(shù)學(xué)(65%)統(tǒng)計(jì) 數(shù)據(jù)管理(64%)統(tǒng)計(jì)- -數(shù)據(jù)挖掘和可視化工具(64%)商業(yè)
6、 管理和兼容性(61%)(2)開(kāi)發(fā)人員:技術(shù) 管理結(jié)構(gòu)化數(shù)據(jù)(91%)統(tǒng)計(jì) 溝通(85%)統(tǒng)計(jì) 數(shù)據(jù)挖掘和可視化工具(76%)商業(yè) 產(chǎn)品設(shè)計(jì)(75%)數(shù)學(xué)&建模 數(shù)學(xué)(75%)統(tǒng)計(jì) 數(shù)據(jù)管理(75%)商業(yè) 項(xiàng)目管理(74%)編程 數(shù)據(jù)庫(kù)管理(73%)編程 后端編程(70%)編程 系統(tǒng)管理(65%)數(shù)據(jù)科學(xué)數(shù)據(jù)科學(xué)(3)創(chuàng)意人員:統(tǒng)計(jì) 溝通(87%)技術(shù) 處理結(jié)構(gòu)化數(shù)據(jù)(79%)商業(yè) 項(xiàng)目管理(77%)統(tǒng)計(jì) 數(shù)據(jù)挖掘和可視化工具(77%)數(shù)學(xué)&建模 數(shù)學(xué)(75%)商業(yè) 產(chǎn)品設(shè)計(jì)和開(kāi)發(fā)(68%)統(tǒng)計(jì) 科學(xué)/科學(xué)方法(68%)統(tǒng)計(jì) 數(shù)據(jù)管理(67%)統(tǒng)計(jì) 統(tǒng)計(jì)學(xué)和統(tǒng)計(jì)建模(63%)商業(yè) 商業(yè)開(kāi)發(fā)(5
7、8%)2. 非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)常見(jiàn)的非結(jié)構(gòu)化數(shù)據(jù)包括文件、圖片、視頻、語(yǔ)音、郵件和聊天記錄等,和結(jié)構(gòu)化數(shù)據(jù)相比,這些數(shù)據(jù)是未被抽象出有價(jià)值信息的數(shù)據(jù),需要經(jīng)過(guò)二次加工才能得到其有價(jià)值信息。由于非結(jié)構(gòu)化數(shù)據(jù)的生產(chǎn)不受格式約束、不受主題約束,人人隨時(shí)都可以根據(jù)自己的視角和觀點(diǎn)進(jìn)行創(chuàng)作生產(chǎn),所以數(shù)據(jù)量比結(jié)構(gòu)化數(shù)據(jù)大。由于非結(jié)構(gòu)化數(shù)據(jù)具有形式多樣、體量大、來(lái)源廣、維度多、有價(jià)內(nèi)容密度低、分析意義大等特點(diǎn),所以要為了分析而存儲(chǔ),而不是為了存儲(chǔ)而存儲(chǔ),即存儲(chǔ)工作是分析的前置工作。當(dāng)前針對(duì)非結(jié)構(gòu)化數(shù)據(jù)的特點(diǎn)均采用分布式文件系統(tǒng)方式來(lái)存儲(chǔ)這些數(shù)據(jù)。3.1.1 大數(shù)據(jù)如何存儲(chǔ)3. 半結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)半結(jié)構(gòu)化數(shù)據(jù)是指
8、數(shù)據(jù)中既有結(jié)構(gòu)化數(shù)據(jù),也有非結(jié)構(gòu)化數(shù)據(jù),比如,攝像頭回轉(zhuǎn)給后端的數(shù)據(jù)中有位置、時(shí)間等結(jié)構(gòu)化數(shù)據(jù),還有圖片等非結(jié)構(gòu)化數(shù)據(jù)。這些數(shù)據(jù)是以數(shù)據(jù)流的形式傳遞的,所以半結(jié)構(gòu)化數(shù)據(jù)也叫流數(shù)據(jù)。對(duì)流數(shù)據(jù)進(jìn)行處理的系統(tǒng)叫做數(shù)據(jù)流系統(tǒng)。數(shù)據(jù)流的特點(diǎn)是數(shù)據(jù)不是永久存儲(chǔ)在數(shù)據(jù)庫(kù)中的靜態(tài)數(shù)據(jù),而是瞬時(shí)處理的源源不斷的連續(xù)數(shù)據(jù)流。在大量的數(shù)據(jù)流應(yīng)用系統(tǒng)中,數(shù)據(jù)流來(lái)自于地理上不同位置的數(shù)據(jù)源,非常適合分布式查詢處理。3.1.1 大數(shù)據(jù)如何存儲(chǔ)1. 容量問(wèn)題要求數(shù)據(jù)容量通??蛇_(dá)PB級(jí),因此,海量數(shù)據(jù)存儲(chǔ)系統(tǒng)一定要有相應(yīng)等級(jí)的擴(kuò)展能力。同時(shí)存儲(chǔ)系統(tǒng)的擴(kuò)展一定要簡(jiǎn)便,可以通過(guò)增加模塊或磁盤(pán)組來(lái)增加容量,擴(kuò)展時(shí)甚至不需要停機(jī)。2
9、. 延遲問(wèn)題“大數(shù)據(jù)”應(yīng)用存在實(shí)時(shí)性問(wèn)題,特別是涉及與網(wǎng)上交易或者金融類(lèi)相關(guān)的應(yīng)用。為了應(yīng)對(duì)這樣的挑戰(zhàn),各種模式的固態(tài)存儲(chǔ)設(shè)備應(yīng)運(yùn)而生,小到簡(jiǎn)單地在服務(wù)器內(nèi)部做高速緩存,大到通過(guò)高性能閃存存儲(chǔ)的全固態(tài)介質(zhì)可擴(kuò)展存儲(chǔ)系統(tǒng),以及自動(dòng)、智能地對(duì)熱點(diǎn)數(shù)據(jù)進(jìn)行讀/寫(xiě)高速緩存的系列產(chǎn)品。3. 安全問(wèn)題某些特殊行業(yè)的應(yīng)用,比如金融數(shù)據(jù)、醫(yī)療信息以及政府情報(bào)等都有自己的安全標(biāo)準(zhǔn)和保密性要求。同時(shí),大數(shù)據(jù)分析往往需要多類(lèi)數(shù)據(jù)的相互參考,因此,會(huì)催生出一些新的、需考慮的安全問(wèn)題。4. 成本問(wèn)題對(duì)于需要使用大數(shù)據(jù)環(huán)境的企業(yè)來(lái)說(shuō),成本控制是關(guān)鍵問(wèn)題。想控制成本,就意味著讓每一臺(tái)設(shè)備實(shí)現(xiàn)更高效率,同時(shí)盡量減少昂貴的部件
10、。目前,重復(fù)數(shù)據(jù)刪除技術(shù)已進(jìn)入主存儲(chǔ)市場(chǎng)。3.1.2 大數(shù)據(jù)存儲(chǔ)的問(wèn)題5. 數(shù)據(jù)的積累任何數(shù)據(jù)都是歷史記錄的一部分,而且數(shù)據(jù)的分析大多是基于時(shí)間段進(jìn)行的。要實(shí)現(xiàn)長(zhǎng)期的數(shù)據(jù)保存,就要求存儲(chǔ)廠商開(kāi)發(fā)出能夠持續(xù)進(jìn)行數(shù)據(jù)一致性檢測(cè)和保持長(zhǎng)期高可用特性的產(chǎn)品,同時(shí)還要滿足數(shù)據(jù)直接在原位更新的功能需求。6. 靈活性大數(shù)據(jù)存儲(chǔ)系統(tǒng)的基礎(chǔ)設(shè)施規(guī)模通常很大,因此必須經(jīng)過(guò)仔細(xì)設(shè)計(jì)才能保證存儲(chǔ)系統(tǒng)的靈活性,使其能夠隨著應(yīng)用分析軟件一起擴(kuò)容及擴(kuò)展。在大數(shù)據(jù)存儲(chǔ)環(huán)境中,數(shù)據(jù)會(huì)同時(shí)保存在多個(gè)部署站點(diǎn),已不需要再做數(shù)據(jù)遷移。一個(gè)大型的數(shù)據(jù)存儲(chǔ)基礎(chǔ)設(shè)施投入使用后就很難再調(diào)整,因此它必須能適應(yīng)不同應(yīng)用類(lèi)型和數(shù)據(jù)場(chǎng)景。7. 應(yīng)用
11、感知最早的一批大數(shù)據(jù)用戶已經(jīng)開(kāi)發(fā)出針對(duì)應(yīng)用的定制化的基礎(chǔ)設(shè)施,在主流存儲(chǔ)系統(tǒng)領(lǐng)域,應(yīng)用感知技術(shù)的使用越來(lái)越普遍,它是改善系統(tǒng)效率和性能的重要手段,8. 針對(duì)小用戶依賴大數(shù)據(jù)的不僅僅是特殊的大型用戶群體,作為一種商業(yè)需求,小型企業(yè)也將會(huì)用到大數(shù)據(jù)。目前一些存儲(chǔ)廠商已經(jīng)在開(kāi)發(fā)一些小型的“大數(shù)據(jù)”存儲(chǔ)系統(tǒng),以吸引那些對(duì)成本比較敏感的用戶。3.1.2 大數(shù)據(jù)存儲(chǔ)的問(wèn)題3.2 HDFS文件系統(tǒng)3.2.1 相關(guān)概念1存儲(chǔ)塊HDFS使用Block(存儲(chǔ)塊)對(duì)文件的存儲(chǔ)進(jìn)行操作,Block是HDFS的基本存儲(chǔ)單元,在Hadoop1.x中默認(rèn)大小是64M,Hadoop2.x中大小默認(rèn)為128M,一個(gè)文件被分成多
12、個(gè)塊,以塊作為存儲(chǔ)單位塊的大小遠(yuǎn)遠(yuǎn)大于普通文件系統(tǒng),可以最小化尋址開(kāi)銷(xiāo)。HDFS采用抽象的塊概念可以帶來(lái)以下幾個(gè)明顯的好處:支持大規(guī)模文件存儲(chǔ):文件以塊為單位進(jìn)行存儲(chǔ),一個(gè)大規(guī)模文件可以被分拆成若干個(gè)文件塊,不同的文件塊可以被分發(fā)到不同的節(jié)點(diǎn)上,因此,一個(gè)文件的大小不會(huì)受到單個(gè)節(jié)點(diǎn)的存儲(chǔ)容量的限制,可以遠(yuǎn)遠(yuǎn)大于網(wǎng)絡(luò)中任意節(jié)點(diǎn)的存儲(chǔ)容量。簡(jiǎn)化系統(tǒng)設(shè)計(jì):首先,大大簡(jiǎn)化了存儲(chǔ)管理,因?yàn)槲募K大小是固定的,這樣就可以很容易計(jì)算出一個(gè)節(jié)點(diǎn)可以存儲(chǔ)多少文件塊;其次,方便了元數(shù)據(jù)的管理,元數(shù)據(jù)不需要和文件塊一起存儲(chǔ),可以由其他系統(tǒng)負(fù)責(zé)管理元數(shù)據(jù)。適合數(shù)據(jù)備份:每個(gè)文件塊都可以冗余存儲(chǔ)到多個(gè)節(jié)點(diǎn)上,大大提高了
13、系統(tǒng)的容錯(cuò)性和可用性。3.2 HDFS文件系統(tǒng)2NameNode、SecondaryNameNode和DataNodeNameNode管理文件系統(tǒng)的命名空間。NameNode維護(hù)兩套數(shù)據(jù):一套是文件目錄與數(shù)據(jù)塊之間的映射關(guān)系,另一套是數(shù)據(jù)塊與節(jié)點(diǎn)間的關(guān)系。SecondaryNameNode第二名稱節(jié)點(diǎn)是HDFS架構(gòu)中的一個(gè)組成部分,它是用來(lái)保存名稱節(jié)點(diǎn)中對(duì)HDFS元數(shù)據(jù)信息的備份,并減少名稱節(jié)點(diǎn)重啟的時(shí)間。SecondaryNameNode一般是單獨(dú)運(yùn)行在一臺(tái)機(jī)器上。DataNode數(shù)據(jù)節(jié)點(diǎn)是分布式文件系統(tǒng)HDFS的工作節(jié)點(diǎn),負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)和讀取,會(huì)根據(jù)客戶端或者是名稱節(jié)點(diǎn)的調(diào)度來(lái)進(jìn)行數(shù)據(jù)的存
14、儲(chǔ)和檢索,并且向名稱節(jié)點(diǎn)定期發(fā)送自己所存儲(chǔ)的塊的列表。每個(gè)數(shù)據(jù)節(jié)點(diǎn)中的數(shù)據(jù)會(huì)被保存在各自節(jié)點(diǎn)的本地Linux文件系統(tǒng)中。3.2 HDFS文件系統(tǒng)3. 心跳機(jī)制所謂“心跳”是一種形象化描述,指的是持續(xù)的按照一定頻率在運(yùn)行,類(lèi)似于心臟在永無(wú)休止的跳動(dòng)。這里指的是DataNode向NameNode發(fā)送心跳的周期是3秒,NameNode周期性的從集群中的每個(gè)DataNode接收心跳包和塊報(bào)告,NameNode可以根據(jù)這個(gè)報(bào)告驗(yàn)證塊映射和其他文件系統(tǒng)元數(shù)據(jù)。收到心跳包說(shuō)明DataNode工作正常。如果DataNode不能發(fā)出心跳信息,NameNode會(huì)標(biāo)記沒(méi)有心跳的DataNode為宕機(jī),不會(huì)給它任何新
15、的I/O請(qǐng)求。4.機(jī)架感知Hadoop在設(shè)計(jì)時(shí)考慮到數(shù)據(jù)的安全與高效,數(shù)據(jù)文件默認(rèn)在HDFS上存放三份,存儲(chǔ)策略為本地一份,同機(jī)架內(nèi)其它某一節(jié)點(diǎn)上一份,不同機(jī)架的某一節(jié)點(diǎn)上一份。這樣如果本地?cái)?shù)據(jù)損壞,節(jié)點(diǎn)可以從同一機(jī)架內(nèi)的相鄰節(jié)點(diǎn)拿到數(shù)據(jù),速度肯定比從跨機(jī)架節(jié)點(diǎn)上拿數(shù)據(jù)要快;同時(shí),如果整個(gè)機(jī)架的網(wǎng)絡(luò)出現(xiàn)異常,也能保證在其它機(jī)架的節(jié)點(diǎn)上找到數(shù)據(jù)。3.2.2 HDFS分布式文件系統(tǒng)的結(jié)構(gòu)HDFS采用Master/Slave架構(gòu)。一個(gè)HDFS集群是由一個(gè)NameNode和一定數(shù)目的DataNodes組成。NameNode是一個(gè)中心服務(wù)器,負(fù)責(zé)管理文件系統(tǒng)的名字空間(namespace)以及客戶端對(duì)文
16、件的訪問(wèn)。集群中的DataNode一般是一個(gè)節(jié)點(diǎn)一個(gè),負(fù)責(zé)管理它所在節(jié)點(diǎn)上的存儲(chǔ)。HDFS暴露了文件系統(tǒng)的名字空間,用戶能夠以文件的形式在上面存儲(chǔ)數(shù)據(jù)。從內(nèi)部看,一個(gè)文件其實(shí)被分成一個(gè)或多個(gè)數(shù)據(jù)塊,這些塊存儲(chǔ)在一組DataNode上。NameNode執(zhí)行文件系統(tǒng)的名字空間操作,比如打開(kāi)、關(guān)閉、重命名文件或目錄。它也負(fù)責(zé)確定數(shù)據(jù)塊到具體DataNode節(jié)點(diǎn)的映射。DataNode負(fù)責(zé)處理文件系統(tǒng)客戶端的讀寫(xiě)請(qǐng)求。在NameNode的統(tǒng)一調(diào)度下進(jìn)行數(shù)據(jù)塊的創(chuàng)建、刪除和復(fù)制,如圖3-1所示的HDFS文件系統(tǒng)整體結(jié)構(gòu)。3.2.2 HDFS分布式文件系統(tǒng)的結(jié)構(gòu)2.3.3 HDFS存儲(chǔ)原理1. 冗余數(shù)據(jù)保
17、存作為一個(gè)分布式文件系統(tǒng),HDFS 的主要設(shè)計(jì)目標(biāo)就是為了保證系統(tǒng)的容錯(cuò)性和可用性, HDFS采用了多副本方式對(duì)數(shù)據(jù)進(jìn)行冗余存儲(chǔ),通常一個(gè)數(shù)據(jù)塊的多個(gè)副本會(huì)被分布到不同的數(shù)據(jù)節(jié)點(diǎn)上,HDFS默認(rèn)的副本系數(shù)是3,這適用于大多數(shù)情況。如圖所示,數(shù)據(jù)塊A被分別存放到數(shù)據(jù)節(jié)點(diǎn)1和2和4上,數(shù)據(jù)塊B被存放在數(shù)據(jù)節(jié)點(diǎn)2、4和5上。這種多副本方式具有以下幾個(gè)優(yōu)點(diǎn): (1)加快數(shù)據(jù)傳輸速度 (2)容易檢查數(shù)據(jù)錯(cuò)誤 (3)保證數(shù)據(jù)可靠性3.2.3 HDFS存儲(chǔ)原理1.數(shù)據(jù)存取策略1)數(shù)據(jù)存放第一個(gè)副本:放置在上傳文件的數(shù)據(jù)節(jié)點(diǎn);如果是集群外提交,則隨機(jī)挑選一臺(tái)磁盤(pán)不太滿、CPU不太忙的節(jié)點(diǎn)。 第二個(gè)副本:放置在
18、與第一個(gè)副本不同的機(jī)架的節(jié)點(diǎn)上 。第三個(gè)副本:與第一個(gè)副本相同機(jī)架的其他節(jié)點(diǎn)上。更多副本:隨機(jī)節(jié)點(diǎn)。3.2.3 HDFS存儲(chǔ)原理1.數(shù)據(jù)存取策略2)數(shù)據(jù)讀取當(dāng)客戶端讀取數(shù)據(jù)時(shí),從名稱節(jié)點(diǎn)獲得數(shù)據(jù)塊不同副本的存放位置列表,列表中包含了副本所在的數(shù)據(jù)節(jié)點(diǎn),可以調(diào)用API來(lái)確定客戶端和這些數(shù)據(jù)節(jié)點(diǎn)所屬的機(jī)架ID,當(dāng)發(fā)現(xiàn)某個(gè)數(shù)據(jù)塊副本對(duì)應(yīng)的機(jī)架ID和客戶端對(duì)應(yīng)的機(jī)架ID相同時(shí),就優(yōu)先選擇該副本讀取數(shù)據(jù),如果沒(méi)有發(fā)現(xiàn),就隨機(jī)選擇一個(gè)副本讀取數(shù)據(jù)3)數(shù)據(jù)復(fù)制 數(shù)據(jù)復(fù)制主要是在數(shù)據(jù)寫(xiě)入和數(shù)據(jù)恢復(fù)的時(shí)候發(fā)生。當(dāng)客戶端向HDFS文件寫(xiě)入數(shù)據(jù)的時(shí)候,一開(kāi)始是寫(xiě)到本地臨時(shí)文件中。假設(shè)該文件的副本系數(shù)設(shè)置為3,當(dāng)本地
19、臨時(shí)文件累積到一個(gè)數(shù)據(jù)塊的大小時(shí),客戶端會(huì)從NameNode獲取一個(gè)DataNode列表用于存放副本。然后客戶端開(kāi)始向第一個(gè)DataNode傳輸數(shù)據(jù),第一個(gè)DataNode一小部分一小部分(4 KB)地接收數(shù)據(jù),將每一部分寫(xiě)入本地倉(cāng)庫(kù),并同時(shí)傳輸該部分到列表中第二個(gè)DataNode節(jié)點(diǎn)。第二個(gè)DataNode也是這樣,一小部分一小部分地接收數(shù)據(jù),寫(xiě)入本地倉(cāng)庫(kù),并同時(shí)傳給第三個(gè)DataNode。最后,第三個(gè)DataNode接收數(shù)據(jù)并存儲(chǔ)在本地。3.3 NoSQL數(shù)據(jù)庫(kù)NoSQL(Not Only SQL ),意即“不僅僅是SQL”,泛指非關(guān)系型的數(shù)據(jù)庫(kù),是一項(xiàng)全新的數(shù)據(jù)庫(kù)革命性運(yùn)動(dòng)。NoSQL一
20、詞最早出現(xiàn)于1998年,是Carlo Strozzi開(kāi)發(fā)的一個(gè)輕量、開(kāi)源、不提供SQL功能的關(guān)系型數(shù)據(jù)庫(kù)。2009年Last.fm的Johan Oskarsson發(fā)起了一次關(guān)于分布式開(kāi)源數(shù)據(jù)庫(kù)的討論,來(lái)自Rackspace的Eric Evans再次提出了NoSQL的概念,這時(shí)的NoSQL主要指非關(guān)系型、分布式、不提供ACID的數(shù)據(jù)庫(kù)設(shè)計(jì)模式。2009年在亞特蘭大舉行的“no:sql(east)”討論會(huì)是一個(gè)里程碑,其口號(hào)是select fun,profit from realworld where relational=false;”。因此,對(duì)于NoSQL,最普遍的解釋是“非關(guān)聯(lián)型的”,強(qiáng)調(diào)鍵
21、值存儲(chǔ)和文檔數(shù)據(jù)庫(kù)的優(yōu)點(diǎn),而不是單純地反對(duì)RDBMS。相對(duì)于目前鋪天蓋地的關(guān)系型數(shù)據(jù)庫(kù)運(yùn)用,這一概念無(wú)疑是一種全新的思維的注入。3.3 NoSQL數(shù)據(jù)庫(kù)3.3.1 NoSQL的產(chǎn)生傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)在應(yīng)付Web2.0網(wǎng)站,特別是超大規(guī)模和高并發(fā)的SNS類(lèi)型的Web2.0純動(dòng)態(tài)網(wǎng)站方面,已經(jīng)顯得力不從心,暴露了很多難以克服的問(wèn)題,主要包括以下幾個(gè)方面: 對(duì)數(shù)據(jù)庫(kù)高并發(fā)讀寫(xiě)的性能需求:Web2.0網(wǎng)站要根據(jù)用戶個(gè)性化信息來(lái)實(shí)時(shí)生成動(dòng)態(tài)頁(yè)面和提供動(dòng)態(tài)信息,所以,基本上無(wú)法使用動(dòng)態(tài)頁(yè)面靜態(tài)化技術(shù),因此數(shù)據(jù)庫(kù)并發(fā)負(fù)載非常高,往往要達(dá)到每秒上萬(wàn)次讀寫(xiě)請(qǐng)求。關(guān)系數(shù)據(jù)庫(kù)應(yīng)付上萬(wàn)次SQL查詢還勉強(qiáng)頂?shù)米?,但是?yīng)付
22、上萬(wàn)次SQL寫(xiě)數(shù)據(jù)請(qǐng)求,硬盤(pán)I/O就已經(jīng)無(wú)法承受了。其實(shí)對(duì)于普通的 BBS 網(wǎng)站,往往也存在對(duì)高并發(fā)寫(xiě)請(qǐng)求的需求。 3.3 NoSQL數(shù)據(jù)庫(kù)對(duì)海量數(shù)據(jù)的高效率存儲(chǔ)和訪問(wèn)的需求:對(duì)于大型的SNS站,每天用戶產(chǎn)生海量的用戶動(dòng)態(tài),以國(guó)外的Friendfeed為例,一個(gè)月就達(dá)到了2.5億條用戶動(dòng)態(tài),對(duì)于關(guān)系數(shù)據(jù)庫(kù)來(lái)說(shuō),在一張2.5億條記錄的表里面進(jìn)行SQL查詢,效率是極其低下甚至是不可忍受的。再例如大型Web網(wǎng)站的用戶登錄系統(tǒng),例如騰訊和盛大,動(dòng)輒數(shù)以億計(jì)的帳號(hào),關(guān)系數(shù)據(jù)庫(kù)也很難應(yīng)付。 對(duì)數(shù)據(jù)庫(kù)的高可擴(kuò)展性和高可用性的需求:在基于Web的架構(gòu)當(dāng)中,數(shù)據(jù)庫(kù)是最難進(jìn)行橫向擴(kuò)展的,當(dāng)一個(gè)應(yīng)用系統(tǒng)的用戶量和訪
23、問(wèn)量與日俱增的時(shí)候,你的數(shù)據(jù)庫(kù)卻沒(méi)有辦法像網(wǎng)頁(yè)服務(wù)器和應(yīng)用服務(wù)器那樣簡(jiǎn)單地通過(guò)添加更多的硬件和服務(wù)節(jié)點(diǎn)來(lái)擴(kuò)展性能和負(fù)載能力。對(duì)于很多需要提供24小時(shí)不間斷服務(wù)的網(wǎng)站來(lái)說(shuō),對(duì)數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行升級(jí)和擴(kuò)展是非常痛苦的事情,往往需要停機(jī)維護(hù)和數(shù)據(jù)遷移。3.2.2 NoSQL與RDBMS關(guān)系型數(shù)據(jù)庫(kù)與NoSQL的簡(jiǎn)單比較3.3.3 NoSQL的分類(lèi)NoSQL僅僅是一個(gè)概念,NoSQL數(shù)據(jù)庫(kù)根據(jù)數(shù)據(jù)的存儲(chǔ)模型和特點(diǎn)分為很多種類(lèi),如何對(duì)他們分類(lèi),以便方便地根據(jù)自己應(yīng)用特色選擇不同的NoSQL數(shù)據(jù)庫(kù)呢?NoSQL主要有六種存儲(chǔ)類(lèi)型:列存儲(chǔ)、文檔存儲(chǔ)、Key-value存儲(chǔ)、圖存儲(chǔ)、對(duì)象存儲(chǔ)、xml數(shù)據(jù)庫(kù),如表所
24、示。3.3.4 NoSQL與NewSQL雖然NoSQL數(shù)據(jù)庫(kù)提供了高擴(kuò)展性和靈活性,但是它也有自己的缺點(diǎn),主要有以下幾個(gè)方面:數(shù)據(jù)模型和查詢語(yǔ)言沒(méi)有數(shù)字驗(yàn)證。SQL基于關(guān)系代數(shù)和關(guān)系演算的查詢結(jié)構(gòu)有堅(jiān)實(shí)的數(shù)學(xué)保證,由于NoSQL沒(méi)有使用SQL,而使用一些模型還未有完善的數(shù)學(xué)基礎(chǔ),這也是NoSQL系統(tǒng)較為混亂的主要原因之一。不支持ACID特性。這為NoSQL帶來(lái)優(yōu)勢(shì)的同時(shí)也帶了了缺點(diǎn),事務(wù)在有些情況下需要ACID特性使得系統(tǒng)在中斷情況下也能保證在線事務(wù)準(zhǔn)確執(zhí)行。功能簡(jiǎn)單。大多數(shù)NoSQL系統(tǒng)提供的功能比較簡(jiǎn)單,這就增加了應(yīng)用層的負(fù)擔(dān)。例如應(yīng)用層要實(shí)現(xiàn)ACID,那么編寫(xiě)代碼的程序員一定極其痛苦。沒(méi)
25、有統(tǒng)一的查詢模型。NoSQL系統(tǒng)一般提供不同的查詢模型,這使得很難規(guī)范應(yīng)用程序接口。3.3.4 NoSQL與NewSQLNewSQL 是用于在線事務(wù)處理(OLTP)的下一代可伸縮關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng) (RDBMS),它可為讀寫(xiě)工作負(fù)載提供NoSQL系統(tǒng)的可伸縮性能,并且維護(hù)保證傳統(tǒng)數(shù)據(jù)庫(kù)系統(tǒng)的ACID(原子性,一貫性,隔離,耐久性)。這些系統(tǒng)通過(guò)employingNoSQL樣式的功能(如面向列的數(shù)據(jù)存儲(chǔ)和分布式體系結(jié)構(gòu))來(lái)突破傳統(tǒng)的RDBMS性能限制,或采用內(nèi)存處理、對(duì)稱多處理(SMP)或Massively 并行加工等技術(shù),并集成NoSQL或Searchcomponents,旨在處理大數(shù)據(jù)的體積
26、、品種、速度和變異性等難題。3.3.4 NoSQL與NewSQLNewSQL 數(shù)據(jù)庫(kù)的分類(lèi)類(lèi)似于NoSQL,有許多類(lèi)別的NewSQL解決方案。分類(lèi)是基于供應(yīng)商為保留 SQL接口而采用的不同方法,并解決傳統(tǒng)的OLTP解決方案的可伸縮性和性能問(wèn)題。NewSQL系統(tǒng)可分為三類(lèi)新的體系結(jié)構(gòu)數(shù)據(jù)庫(kù)點(diǎn)集群中運(yùn)行的。這些數(shù)據(jù)庫(kù)通常是從頭編寫(xiě)的,并考慮到分布式體系結(jié)構(gòu),包括分布式并發(fā)控制、流控制和分布式查詢處理等組件。這類(lèi)數(shù)據(jù)庫(kù)有VoltDB、NuoDB Clustrix等。新的 MySQL 存儲(chǔ)引擎相同的編程接口,但比內(nèi)置引擎(如InnoDB)更有規(guī)模。這些新的存儲(chǔ)引擎的例子包括 TokuDB 和 Infi
27、niDB。透明聚類(lèi)/切分這些解決方案保留了OLTP 數(shù)據(jù)庫(kù)的原始格式,為群集提供了可插入的功能,以確??缮炜s性。3.4 HBase數(shù)據(jù)庫(kù)3.4.1 Hbase簡(jiǎn)介HBase即Hadoop Database,是一個(gè)分布式的、面向列的開(kāi)源數(shù)據(jù)庫(kù),該技術(shù)來(lái)源于 Fay Chang 所撰寫(xiě)的Google論文“Bigtable:一個(gè)結(jié)構(gòu)化數(shù)據(jù)的分布式存儲(chǔ)系統(tǒng)”。就像Bigtable利用了Google文件系統(tǒng)(File System)所提供的分布式數(shù)據(jù)存儲(chǔ)一樣,HBase在Hadoop之上提供了類(lèi)似于Bigtable的能力。HBase是Apache的Hadoop項(xiàng)目的子項(xiàng)目。HBase不同于一般的關(guān)系數(shù)據(jù)
28、庫(kù),它是一個(gè)適合于非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫(kù)。另一個(gè)不同的是HBase基于列的而不是基于行的模式。數(shù)據(jù)模型HBase的數(shù)據(jù)模型也是由一張張的表組成,每一張表里也有數(shù)據(jù)行和列,但是在HBase數(shù)據(jù)庫(kù)中的行和列又和關(guān)系型數(shù)據(jù)庫(kù)的稍有不同。下面統(tǒng)一介紹HBase數(shù)據(jù)模型中一些名詞的概念:表(Table): HBase會(huì)將數(shù)據(jù)組織進(jìn)一張張的表里面,但是需要注意的是表名必須是能用在文件路徑里的合法名字,因?yàn)镠Base的表是映射成hdfs上面的文件。行鍵(Row Key):HBase表的主鍵,表中的記錄按照行鍵排序; 時(shí)間戳(Timestamp):每次數(shù)據(jù)操作對(duì)應(yīng)的時(shí)間戳,可以看作是數(shù)據(jù)的版本號(hào); 列族(C
29、olumn Family):表在水平方向有一個(gè)或者多個(gè)列族組成,一個(gè)列族中可以由任意多個(gè)列組成,即列族支持動(dòng)態(tài)擴(kuò)展,無(wú)需預(yù)先定義列的數(shù)量以及類(lèi)型,所有列均以二進(jìn)制格式存儲(chǔ),用戶需要自行進(jìn)行類(lèi)型轉(zhuǎn)換。 單元(Cell): 每一個(gè) 行鍵,列族和列標(biāo)識(shí)共同組成一個(gè)單元,存儲(chǔ)在單元里的數(shù)據(jù)稱單元數(shù)據(jù),單元和單元數(shù)據(jù)也沒(méi)有特定的數(shù)據(jù)類(lèi)型,以二進(jìn)制字節(jié)來(lái)存儲(chǔ)。3.4.1 Hbase簡(jiǎn)介HBase的系統(tǒng)架構(gòu)個(gè)功能組件類(lèi)似于HDFS,由ZooKeeper、HMaster、HRegionServer組成。其中HMaster的作用類(lèi)似于HDFS中的NameNode名字節(jié)點(diǎn);HRegionServer的作用類(lèi)似于數(shù)
30、據(jù)節(jié)點(diǎn)DataNode。3.4.2 Hbase體系結(jié)構(gòu)1) Client Client 是Hbase功能的使用者,包含訪問(wèn) HBase 的接口,client 維護(hù)著一些緩存來(lái)加快對(duì) HBase 的訪問(wèn),比如HRegion 的位置信息。HBase Client 使用 HBase 的 RPC 機(jī)制與 HMaster 和 HRegionServer 進(jìn)行通信。對(duì)于管理類(lèi)操作,Client 與 HMaster 進(jìn)行 RPC;對(duì)于數(shù)據(jù)讀寫(xiě)類(lèi)操作,Client 與 HRegionServer 進(jìn)行RPC。2)zookeeper協(xié)調(diào)者Zookeeper存儲(chǔ)了RegionServer的狀態(tài)信息、HMaster
31、地址,存儲(chǔ)Hbase的schema,包括有哪些table,每個(gè)table有哪些column family。監(jiān)控主Master和備用Master,一旦主Master異常馬上啟用備用Master。HMaster隨時(shí)感知各個(gè)HRegionServer的健康狀況。3.4.2 Hbase體系結(jié)構(gòu)3)HMaster管理者HMaster 沒(méi)有單點(diǎn)問(wèn)題,HBase 中可以啟動(dòng)多個(gè) HMaster,通過(guò) Zookeeper 的 Master Election 機(jī)制保證總有一個(gè) HMaster 運(yùn)行,HMaster 在功能上主要負(fù)責(zé)表和 HRegion 的管理工作: 管理用戶對(duì)表的增、刪、改、查操作; 管理 HR
32、egionServer 的負(fù)載均衡,調(diào)整 HRegion 分布; 在 HRegion 分裂后,負(fù)責(zé)新 HRegion 的分配; 在 HRegionServer 停機(jī)后,負(fù)責(zé)失效 HRegionServer 上的 HRegion 的遷移。 每個(gè) HRegion 服務(wù)器都會(huì)和 HMaster 服務(wù)器通訊,HMaster 的主要任務(wù)就是要告訴每個(gè)HRegion 服務(wù)器它要維護(hù)哪些 HRegion。3.4.2 Hbase體系結(jié)構(gòu)4)HRegionServer存儲(chǔ)者HregionServer是HBase中最核心的模塊,主要負(fù)責(zé)響應(yīng)用戶I/O請(qǐng)求,向HDFS文件系統(tǒng)中讀寫(xiě)數(shù)據(jù)。HRegionServer
33、內(nèi)部管理了一系列 HRegion 對(duì)象,每個(gè) HRegion 對(duì)應(yīng)著表(Table)中的一個(gè) HRegion,HRegion 由多個(gè) HStore 組成。每個(gè) HStore 對(duì)應(yīng)了表中的一個(gè)列族的存儲(chǔ),可以看出,每個(gè)列族其實(shí)就是一個(gè)集中的存儲(chǔ)單元,因此,最好將具備共同 IO 特性的列放在一個(gè)列族中,這樣最高效。 Client 訪問(wèn) HBase 上數(shù)據(jù)的過(guò)程并不需要 HMaster 參與(尋址訪問(wèn) Zookeeper 和HRegionServer,數(shù)據(jù)讀寫(xiě)訪問(wèn) HRegionServer),HMaster 僅僅維護(hù)著表和 HRegion 的元數(shù)據(jù)信息,負(fù)載很低。 3.4.2 Hbase體系結(jié)構(gòu)1
34、. 物理模型用戶在表格中存儲(chǔ)數(shù)據(jù),每一行都有一個(gè)可排序的主鍵和任意多的列。由于是稀疏存儲(chǔ),同一張里面的每一行數(shù)據(jù)都可以有截然不同的列。列名字的格式是:,都是由字符串組成的,每一張表有一個(gè)列族集合,這個(gè)集合是固定不變的,只能通過(guò)改變表結(jié)構(gòu)來(lái)改變。但是qulifier值相對(duì)于每一行來(lái)說(shuō)都是可以改變的。HBase把同一個(gè)列族里面的數(shù)據(jù)存儲(chǔ)在同一個(gè)目錄下,并且HBase的寫(xiě)操作是鎖行的,每一行都是一個(gè)原子元素,都可以加鎖。HBase所有數(shù)據(jù)庫(kù)的更新都有一個(gè)時(shí)間戳標(biāo)記,每個(gè)更新都是一個(gè)新的版本,HBase會(huì)保留一定數(shù)量的版本,這個(gè)值是可以設(shè)定的,客戶端可以選擇獲取距離某個(gè)時(shí)間點(diǎn)最近的版本單元的值,或者一
35、次獲取所有版本單元的值。3.4.3 HBase數(shù)據(jù)模型2. 概念視圖可以將一個(gè)表想象成一個(gè)大的映射關(guān)系,通過(guò)行健、行健+時(shí)間戳或行鍵+列(列族:列修飾符),就可以定位特定數(shù)據(jù),HBase是稀疏存儲(chǔ)數(shù)據(jù)的,因此某些列可以是空白的,下表是某個(gè)test表的HBase概念視圖。3.4.3 HBase數(shù)據(jù)模型3.5 大數(shù)據(jù)處理3.5.1 多處理器技術(shù)1. 單處理器計(jì)算性能的發(fā)展提升單處理器計(jì)算機(jī)系統(tǒng)計(jì)算速度的常用技術(shù)手段有以下幾個(gè)方面:1)提升計(jì)算機(jī)處理器字長(zhǎng)。2)提高處理器芯片集成度。3)提升處理器的主頻。4)改進(jìn)處理器微架構(gòu)。2. 多處理器技術(shù)的發(fā)展大數(shù)據(jù)處理的基本單元是計(jì)算機(jī),作為計(jì)算機(jī)核心的處理
36、器的功能是將輸入的數(shù)字化數(shù)據(jù)和信息進(jìn)行加工和處理,然后將結(jié)果輸出。因此處理器的性能往往是決定計(jì)算機(jī)性能高低的決定性因素。衡量一個(gè)具有N個(gè)處理器的計(jì)算節(jié)點(diǎn)的性能指標(biāo)可用公式(3-1)表示。 公式(3-1) IPS的計(jì)算過(guò)程包括兩部分,前半部分是單個(gè)處理器計(jì)算能力的計(jì)算過(guò)程,后半部分是N個(gè)并行處理器結(jié)合后該計(jì)算節(jié)點(diǎn)的計(jì)算能力的計(jì)算過(guò)程。在前半部分中,MF(Main Frequency)為處理器的主頻,即處理器內(nèi)核工作的時(shí)鐘頻率( Clock Speed); IPC( Instruction Per Clock)為每個(gè)時(shí)鐘周期內(nèi)可執(zhí)行的指令數(shù)。在后半部分中,F(xiàn)為計(jì)算工作中不可被并行化的部分所占比例;
37、N為處理器數(shù)量。 從公式中可以看出,提高計(jì)算節(jié)點(diǎn)的性能有兩個(gè)途徑,一方面是增加單處理器的計(jì)算能力;另一方面是增加處理器的數(shù)量從公式可以看出,提高處理器的主頻(MF)是提升計(jì)算能力的最直接方式3.5.1 多處理器技術(shù)多處理器計(jì)算系統(tǒng)按照其結(jié)構(gòu)特征,通??梢苑譃閮深?lèi):非對(duì)稱多處理器架構(gòu)(Asymmetric Multi Processing,ASMP) ;對(duì)稱多處理器架構(gòu)(Symmetric Multi Processing,SMP)3.5.1 多處理器技術(shù)3.5.2并行計(jì)算并行計(jì)算(Parallel Computing)是指在具有并行處理能力的計(jì)算節(jié)點(diǎn)上,將一個(gè)計(jì)算任務(wù)分解成多個(gè)并行子任務(wù),并分
38、配給不同的處理器,各個(gè)處理器之間相互協(xié)同,并行地執(zhí)行子任務(wù),從而達(dá)到加速計(jì)算速度或提升計(jì)算規(guī)模的目的。為了成功開(kāi)展并行計(jì)算,必須具備三個(gè)基本條件:并行機(jī);并行算法的設(shè)計(jì);并行編程。3.2并行計(jì)算1. 并行機(jī)并行計(jì)算的基礎(chǔ)是具有并行處理能力的計(jì)算節(jié)點(diǎn),即并行機(jī),并行機(jī)需包含兩個(gè)或兩個(gè)以上的處理器,這些處理器通過(guò)互連網(wǎng)絡(luò)相連,協(xié)同并行工作。并行機(jī)的核心要素主要包括3個(gè):處理器、內(nèi)存、網(wǎng)絡(luò),因此計(jì)算節(jié)點(diǎn)并行化研究工作也就集中在這3個(gè)核心要素的并行化上。處理器通常采用以下幾種方式對(duì)處理器資源進(jìn)行并行化提升超標(biāo)量(Superscalar)技術(shù)顯式并行指令計(jì)算(Explicitly Parallel In
39、structions Computing,EPIC)向量處理器(Vector Processor)多線程(Multithreading)技術(shù)內(nèi)存的并行化方式可以分為兩類(lèi)。分布式內(nèi)存結(jié)構(gòu)。共享內(nèi)存結(jié)構(gòu)3.5.2 并行計(jì)算互連網(wǎng)絡(luò)是連接所有處理節(jié)點(diǎn)形成并行機(jī)的高速網(wǎng)絡(luò),因此是決定并行機(jī)性能的第三個(gè)核心因素。在這里對(duì)這些網(wǎng)絡(luò)結(jié)構(gòu)按照其連接性質(zhì)做一個(gè)簡(jiǎn)要的分類(lèi)。1) 靜態(tài)拓?fù)浣Y(jié)構(gòu)靜態(tài)拓?fù)浣Y(jié)構(gòu)即處理節(jié)點(diǎn)之間通過(guò)固定的物理連接相連,且在程序運(yùn)行的過(guò)程中節(jié)點(diǎn)間的連接方式不發(fā)生變化。這樣的靜態(tài)拓?fù)浣Y(jié)構(gòu)包括陣列( Array)、環(huán)(Ring)、網(wǎng)格( Mesh)、環(huán)面(Torus)、樹(shù)(Tree)、超立方體(H
40、ypercube)、蝶網(wǎng)(Butterfly)、Benes網(wǎng)等。 2)動(dòng)態(tài)拓?fù)浣Y(jié)構(gòu)動(dòng)態(tài)拓?fù)浣Y(jié)構(gòu)即在處理節(jié)點(diǎn)之間的連接路徑交叉處采用電子開(kāi)關(guān)、路由器或仲裁器等動(dòng)態(tài)連接設(shè)備,實(shí)現(xiàn)節(jié)點(diǎn)間的動(dòng)態(tài)連接。動(dòng)態(tài)拓?fù)浣Y(jié)構(gòu)包括單一總線、多層總線、交叉開(kāi)關(guān)、多級(jí)互連網(wǎng)絡(luò)等。3)高速互聯(lián)網(wǎng)絡(luò)高速互聯(lián)網(wǎng)絡(luò)是隨著網(wǎng)絡(luò)技術(shù)的發(fā)展而新產(chǎn)生的新的并行機(jī)互連網(wǎng)絡(luò)。在高速互聯(lián)網(wǎng)絡(luò)模式下,處理節(jié)點(diǎn)間可以通過(guò)高速以太網(wǎng)或?qū)S媒粨Q機(jī)相連,實(shí)現(xiàn)高達(dá)G比特甚至T比特級(jí)的數(shù)據(jù)交換。高速互聯(lián)網(wǎng)絡(luò)的引入,降低了并行機(jī)互連網(wǎng)絡(luò)的設(shè)計(jì)難度和研發(fā)成本,使得采用普通計(jì)算機(jī)集群作為并行技術(shù)節(jié)點(diǎn)成為可能,極大地推動(dòng)了并行計(jì)算的應(yīng)用領(lǐng)域和規(guī)模。3.5.2 并
41、行計(jì)算2. 并行算法 適合并行機(jī)處理的計(jì)算任務(wù)普遍具有可分解為多個(gè)并行子任務(wù)的特性,將一個(gè)大的計(jì)算任務(wù)分解為多個(gè)可執(zhí)行的并行子任務(wù)的過(guò)程即為并行算法的設(shè)計(jì)。一個(gè)好的并行算法設(shè)計(jì),可以極大地提升計(jì)算任務(wù)的并行度,即可降低式(3-1)中的參數(shù)F,從而實(shí)現(xiàn)在并行計(jì)算環(huán)境下的更高性能處理。并行算法的設(shè)計(jì)過(guò)程,可以分為以下4個(gè)階段3.5.2 并行計(jì)算1)劃分(Partitioning)劃分方法描述充分開(kāi)拓算法的并發(fā)性和可擴(kuò)放性;先進(jìn)行數(shù)據(jù)分解(稱域分解),再進(jìn)行計(jì)算功能的分解(稱功能分解);使數(shù)據(jù)集和計(jì)算集互不相交;劃分階段忽略處理器數(shù)目和目標(biāo)機(jī)器的體系結(jié)構(gòu);能分為兩類(lèi)劃分:域分解(domain dec
42、omposition)功能分解(functional decomposition)3.5.2 并行計(jì)算2)通信a、通信描述通訊是PCAM設(shè)計(jì)過(guò)程的重要階段;劃分產(chǎn)生的諸任務(wù),一般不能完全獨(dú)立執(zhí)行,需要在任務(wù)間進(jìn)行數(shù)據(jù)交流;從而產(chǎn)生了通訊;功能分解確定了諸任務(wù)之間的數(shù)據(jù)流;諸任務(wù)是并發(fā)執(zhí)行的,通訊則限制了這種并發(fā)性;b、四個(gè)通訊模式局部/全局通訊結(jié)構(gòu)化/非結(jié)構(gòu)化通訊靜態(tài)/動(dòng)態(tài)通訊同步/異步通訊3.5.2 并行計(jì)算3)任務(wù)組合進(jìn)入到任務(wù)聚合階段后,設(shè)計(jì)者就需要仔細(xì)考慮實(shí)際環(huán)境中的各種限制因素進(jìn)行優(yōu)化以最終實(shí)現(xiàn)高效的并行算法。任務(wù)聚合是將前面階段劃分出的細(xì)粒度子任務(wù)進(jìn)行組合成粗粒度的較大子任務(wù),以達(dá)
43、到以下3個(gè)目標(biāo)。 a) 擴(kuò)大任務(wù)粒度,以避免大量細(xì)粒度任務(wù)帶來(lái)的額外過(guò)量通信開(kāi)銷(xiāo)和任務(wù)創(chuàng)建開(kāi)銷(xiāo),從而提高算法的性能。b) 保持算法可擴(kuò)展度,在任務(wù)聚合時(shí)要避免過(guò)度聚合,要保持足夠的任務(wù)數(shù)量,以適應(yīng)算法規(guī)模和運(yùn)行環(huán)境的變化,以及利用任務(wù)間執(zhí)行與通信的時(shí)間交錯(cuò)性提高算法性能。c) 降低程序?qū)崿F(xiàn)復(fù)雜度,過(guò)細(xì)粒度的任務(wù)劃分通常會(huì)增加程序?qū)崿F(xiàn)的復(fù)雜度,任務(wù)聚合需要通過(guò)一定的組合方式避免程序?qū)崿F(xiàn)的過(guò)高復(fù)雜度。4)處理器映射(Mapping)并行算法設(shè)計(jì)的最后一步,是決定如何將拆分好的子任務(wù)指派到特定的處理器執(zhí)行,即處理器映射。處理器映射算法的設(shè)計(jì)目標(biāo)就是降低完成整個(gè)計(jì)算任務(wù)的處理器執(zhí)行時(shí)間。為了達(dá)到這個(gè)目
44、標(biāo),設(shè)計(jì)者需要仔細(xì)規(guī)劃以達(dá)到兩個(gè)目標(biāo)的優(yōu)化。a) 提高并行度,即盡量將那些可以并發(fā)執(zhí)行的任務(wù)分配到不同的處理器中執(zhí)行,以充分利用不同處理器的并行處理能力,降低執(zhí)行時(shí)間。b) 提高局部執(zhí)行效率,即盡量將互相之間會(huì)產(chǎn)生頻繁通信的任務(wù)分配在同一個(gè)處理器執(zhí)行,以避免這些任務(wù)在不同處理器中增加額外的通信開(kāi)銷(xiāo)。3.5.2 并行計(jì)算3.6 分布式計(jì)算3.6.1 分布式計(jì)算簡(jiǎn)介隨著信息化項(xiàng)目中數(shù)據(jù)的飛速增長(zhǎng),一些大任務(wù)要求計(jì)算機(jī)能應(yīng)付大量的計(jì)算任務(wù),此時(shí)單機(jī)并行計(jì)算或多機(jī)并行計(jì)算尤其對(duì)于分散系統(tǒng)(一組計(jì)算機(jī)通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)相互連通后形成的系統(tǒng))的計(jì)算顯示出局限性。分布式計(jì)算就是將計(jì)算任務(wù)分?jǐn)偟酱罅康挠?jì)算節(jié)點(diǎn)上,
45、一起完成海量的計(jì)算任務(wù)。而分布式計(jì)算的原理和并行計(jì)算類(lèi)似,就是將一個(gè)復(fù)雜龐大的計(jì)算任務(wù)是當(dāng)劃分為一個(gè)個(gè)小任務(wù)。任務(wù)并行執(zhí)行。只不過(guò)分布式計(jì)算會(huì)將這些任務(wù)分配到不同的計(jì)算節(jié)點(diǎn)上,每個(gè)計(jì)算節(jié)點(diǎn)只需要完成自己的任務(wù)即可,可以有效分擔(dān)海量的計(jì)算任務(wù)。而每個(gè)計(jì)算節(jié)點(diǎn)也可以并行處理自身的任務(wù)。更加充分利用機(jī)器的CPU資源。最后再將每個(gè)節(jié)點(diǎn)計(jì)算結(jié)果匯總。再到最后的計(jì)算結(jié)果。1. 分布式計(jì)算步驟劃分計(jì)算任務(wù)以支持分布式計(jì)算,很多時(shí)候看起來(lái)較為困難。但人們逐漸發(fā)現(xiàn)這樣確實(shí)是可行的。而且隨著計(jì)算任務(wù)量增加與計(jì)算節(jié)點(diǎn)增加,這種劃分體現(xiàn)出來(lái)的價(jià)值會(huì)越來(lái)越大。分布式計(jì)算一般分為以下幾步:1) 設(shè)計(jì)分布式計(jì)算模型首先要規(guī)
46、定分布式系統(tǒng)的計(jì)算模型。計(jì)算模型決定了系統(tǒng)中各個(gè)組件應(yīng)該如何運(yùn)行。組件之間應(yīng)該如何進(jìn)行消息通信,組件和節(jié)點(diǎn)應(yīng)該如何管理等。2) 分布式任務(wù)分配分布式算法不同于普通算法。普通算法通常是按部就班一部接一部完成任務(wù)。而分布式計(jì)算中,計(jì)算任務(wù)是分?jǐn)偟礁鱾€(gè)節(jié)點(diǎn)上的。該算法著重解決的是能否分配任務(wù)。我如何分配任務(wù)的問(wèn)題。3.6.1 分布式計(jì)算簡(jiǎn)介2. 分布式計(jì)算優(yōu)點(diǎn)分布式計(jì)算是在兩個(gè)或多個(gè)軟件互相共享信息,這些軟件既可以在同一臺(tái)計(jì)算機(jī)上運(yùn)行,也可以在通過(guò)網(wǎng)絡(luò)連接起來(lái)的多臺(tái)計(jì)算機(jī)上運(yùn)行。分布式計(jì)算比起其它算法具有以下幾個(gè)優(yōu)點(diǎn):1)稀有資源可以共享。2)通過(guò)分布式計(jì)算可以在多臺(tái)計(jì)算機(jī)上平衡計(jì)算負(fù)載。3)可以把
47、程序放在最適合運(yùn)行它的計(jì)算機(jī)上。其中,共享稀有資源和平衡負(fù)載是計(jì)算機(jī)分布式計(jì)算的核心思想之一。3.6.1 分布式計(jì)算簡(jiǎn)介1CAP理論2000年7月,加州大學(xué)伯克利分校的Eric Brewer教授在ACM PODC會(huì)議上提出CAP猜想。2年后,麻省理工學(xué)院的Seth Gilbert和Nancy Lynch從理論上證明了CAP。之后,CAP理論正式成為分布式計(jì)算領(lǐng)域的公認(rèn)定理。一個(gè)分布式系統(tǒng)不可能同時(shí)滿足一致性(C:Consistency)、可用性(A:Availability)和分區(qū)容錯(cuò)性(P:Partition tolerance)這三個(gè)基本需求,最多只能同時(shí)滿足其中兩項(xiàng)。3.6.2 分布式計(jì)
48、算理論基礎(chǔ)2BASE理論BASE是Basically Available(基本可用)、Soft state(軟狀態(tài))和Eventually consistent(最終一致性)三個(gè)短語(yǔ)的縮寫(xiě)。BASE理論是對(duì)CAP中一致性和可用性權(quán)衡的結(jié)果,其來(lái)源于對(duì)大規(guī)模互聯(lián)網(wǎng)系統(tǒng)分布式實(shí)踐的總結(jié), 是基于CAP定理逐步演化而來(lái)的。BASE理論的核心思想是:即使無(wú)法做到強(qiáng)一致性,但每個(gè)應(yīng)用都可以根據(jù)自身業(yè)務(wù)特點(diǎn),采用適當(dāng)?shù)姆绞絹?lái)使系統(tǒng)達(dá)到最終一致性。3.6.2 分布式計(jì)算理論基礎(chǔ) 3.7.1 MapReduce簡(jiǎn)介MapReduce概念MapReduce是面向大數(shù)據(jù)并行處理的計(jì)算模型、框架和平臺(tái),它隱含以下3
49、層含義: 1) MapReduce是一個(gè)基于集群的高性能并行計(jì)算平臺(tái)(Cluster Infrastructure)。它允許用市場(chǎng)上普通的商用服務(wù)器構(gòu)成一個(gè)包含數(shù)十、數(shù)百至數(shù)千個(gè)節(jié)點(diǎn)的分布和并行計(jì)算集群。 2) MapReduce是一個(gè)并行計(jì)算與運(yùn)行軟件框架(Software Framework)。它提供了一個(gè)龐大但設(shè)計(jì)精良的并行計(jì)算軟件框架,能自動(dòng)完成計(jì)算任務(wù)的并行化處理,自動(dòng)劃分計(jì)算數(shù)據(jù)和計(jì)算任務(wù),在集群節(jié)點(diǎn)上自動(dòng)分配和執(zhí)行任務(wù)以及收集計(jì)算結(jié)果,將數(shù)據(jù)分布存儲(chǔ)、數(shù)據(jù)通信容錯(cuò)處理等并行計(jì)算涉及到的很多系統(tǒng)底層的復(fù)雜細(xì)節(jié)交由系統(tǒng)負(fù)責(zé)處理,大大減少r軟件開(kāi)發(fā)人員的負(fù)擔(dān)。 3) MapReduce
50、是一個(gè)并行程序設(shè)計(jì)模型與方法(Programming ModelMetbodology)。它借助于甬?dāng)?shù)式程序設(shè)計(jì)語(yǔ)言Lisp的設(shè)計(jì)思想,提供了一種簡(jiǎn)便的并行程序設(shè)計(jì)方法,用Map和Reduce兩個(gè)函數(shù)編程實(shí)現(xiàn)基本的并行計(jì)算任務(wù),提供了抽象的操作和并行編程接口,以簡(jiǎn)單方便地完成大規(guī)模數(shù)據(jù)的編程和計(jì)算處理。3.7 MapReduce模型MapReduce主要功能1. 數(shù)據(jù)劃分和計(jì)算任務(wù)調(diào)度:系統(tǒng)自動(dòng)將一個(gè)作業(yè)(Job)待處理的大數(shù)據(jù)劃分為很多個(gè)數(shù)據(jù)塊,每個(gè)數(shù)據(jù)塊對(duì)應(yīng)于一個(gè)計(jì)算任務(wù)(Task),并自動(dòng) 調(diào)度計(jì)算節(jié)點(diǎn)來(lái)處理相應(yīng)的數(shù)據(jù)塊。作業(yè)和任務(wù)調(diào)度功能主要負(fù)責(zé)分配和調(diào)度計(jì)算節(jié)點(diǎn)(Map節(jié)點(diǎn)或Redu
51、ce節(jié)點(diǎn)),同時(shí)負(fù)責(zé)監(jiān)控這些節(jié)點(diǎn)的執(zhí)行狀態(tài),并 負(fù)責(zé)Map節(jié)點(diǎn)執(zhí)行的同步控制。2. 數(shù)據(jù)/代碼互定位:為了減少數(shù)據(jù)通信,一個(gè)基本原則是本地化數(shù)據(jù)處理,即一個(gè)計(jì)算節(jié)點(diǎn)盡可能處理其本地磁盤(pán)上所分布存儲(chǔ)的數(shù)據(jù),這實(shí)現(xiàn)了代碼向 數(shù)據(jù)的遷移;當(dāng)無(wú)法進(jìn)行這種本地化數(shù)據(jù)處理時(shí),再尋找其他可用節(jié)點(diǎn)并將數(shù)據(jù)從網(wǎng)絡(luò)上傳送給該節(jié)點(diǎn)(數(shù)據(jù)向代碼遷移),但將盡可能從數(shù)據(jù)所在的本地機(jī)架上尋 找可用節(jié)點(diǎn)以減少通信延遲。3.7 MapReduce模型 MapReduce主要功能3. 系統(tǒng)優(yōu)化:為了減少數(shù)據(jù)通信開(kāi)銷(xiāo),中間結(jié)果數(shù)據(jù)進(jìn)入Reduce節(jié)點(diǎn)前會(huì)進(jìn)行一定的合并處理;一個(gè)Reduce節(jié)點(diǎn)所處理的數(shù)據(jù)可能會(huì)來(lái)自多個(gè) Map節(jié)
52、點(diǎn),為了避免Reduce計(jì)算階段發(fā)生數(shù)據(jù)相關(guān)性,Map節(jié)點(diǎn)輸出的中間結(jié)果需使用一定的策略進(jìn)行適當(dāng)?shù)膭澐痔幚?,保證相關(guān)性數(shù)據(jù)發(fā)送到同一個(gè) Reduce節(jié)點(diǎn);此外,系統(tǒng)還進(jìn)行一些計(jì)算性能優(yōu)化處理,如對(duì)最慢的計(jì)算任務(wù)采用多備份執(zhí)行、選最快完成者作為結(jié)果。4. 出錯(cuò)檢測(cè)和恢復(fù):以低端商用服務(wù)器構(gòu)成的大規(guī)模MapReduce計(jì)算集群中,節(jié)點(diǎn)硬件(主機(jī)、磁盤(pán)、內(nèi)存等)出錯(cuò)和軟件出錯(cuò)是常態(tài),因此 MapReduce需要能檢測(cè)并隔離出錯(cuò)節(jié)點(diǎn),并調(diào)度分配新的節(jié)點(diǎn)接管出錯(cuò)節(jié)點(diǎn)的計(jì)算任務(wù)。同時(shí),系統(tǒng)還將維護(hù)數(shù)據(jù)存儲(chǔ)的可靠性,用多備份冗余存儲(chǔ)機(jī)制提 高數(shù)據(jù)存儲(chǔ)的可靠性,并能及時(shí)檢測(cè)和恢復(fù)出錯(cuò)的數(shù)據(jù)。3.7 MapRe
53、duce模型 3.7.2 MapReduce編程模型MapReduce模型從MapReduce命名特點(diǎn)可以看出,MapReduce由兩個(gè)階段組成:Map和Reduce。用戶只需編寫(xiě)map( )和reduce( )兩個(gè)函數(shù),即可完成簡(jiǎn)單的分布式程序的設(shè)計(jì)。Map( )函數(shù)以key/value對(duì)作為輸入,產(chǎn)生另外一系列key/value對(duì)作為中間輸出寫(xiě)入本地磁盤(pán)。MapReduce框架會(huì)自動(dòng)把這些中間數(shù)據(jù)按照key值進(jìn)行聚集,且key值相同(用戶可設(shè)定聚集策略,默認(rèn)情況下是對(duì)key值進(jìn)行哈希取模)的數(shù)據(jù)被統(tǒng)一交給reduce( )函數(shù)處理。Reduce( )函數(shù)以key及對(duì)應(yīng)的value列表作為輸
54、入,經(jīng)合并key相同的value值后,產(chǎn)生另外一系列key/value對(duì)作為最終輸出寫(xiě)入HDFS3.7 MapReduce模型Shuffle過(guò)程Shuffle指的是對(duì)Map輸出結(jié)果進(jìn)行分區(qū)、排序、合并等處理并交給Reduce過(guò)程。Map端的Shuffle過(guò)程a)執(zhí)行Mapb) 緩存寫(xiě)入c)溢寫(xiě)(spill)d)文件歸并3.7 MapReduce模型Reduce端的Shuffle過(guò)程copy過(guò)程Merge過(guò)程reducer的輸入文件3.7 MapReduce模型WordCount詞頻統(tǒng)計(jì)下面以MapReduce中的“hello worid”程序-WordCount為例介紹程序設(shè)計(jì)方法。3.7 M
55、apReduce模型 其中Map部分如下: / key:字符串偏移量 /value:文件中一行字符串的內(nèi)容 map(String key,string value) /將字符串分割成單詞 words = splitintoToken (value), /將一組單詞中每個(gè)單詞賦值給w For each word w in words /輸出key/value(key為w,value為”1”) EmitIntermediate(w,”1”); Reduce部分如下: /key:一個(gè)單詞 il values單詞出現(xiàn)的次數(shù)列表 Reduce( st ring key,Iterator values):
56、 int resuit; for each v in values result+=stringToint (v); Emit (key,IntToStrmg(result);MapReduce 1架構(gòu)MapReduce模型在發(fā)展過(guò)程中經(jīng)歷了兩個(gè)版本:MRv1和YARN/MRv2。這一小節(jié)將為大家介紹一下MRv1計(jì)算框架。同HDFS 一樣,Hadoop MapReduce也采用了Master/Slave (M/S)架構(gòu),它主要由以下幾個(gè)組件組成:Client、JobTracker、TaskTracker和Task。下面分別對(duì)這幾個(gè)組件進(jìn)行介紹。如圖3-12Hadoop MapReduce架構(gòu)。
57、3.7.3 YARN/MapReduce2為從根本上解決舊MapReduce框架的性能瓶頸,促進(jìn) Hadoop 框架的更長(zhǎng)遠(yuǎn)發(fā)展,從 0.23.0 版本開(kāi)始,Hadoop 的 MapReduce 框架完全重構(gòu),發(fā)生了根本的變化。新的 Hadoop MapReduce 框架命名為 MapReduceV2 或者叫 Yarn。1 Yarn基本組成1) ResourceManager(RM)2) ApplicationMaster(AM)3)NodeManager(NM)4) Container2、MRv2架構(gòu)3.7.3 YARN/MapReduce2Yarn執(zhí)行流程3.7.3 Yarn /MapRe
58、duce21) 用戶向YARN中提交應(yīng)用程序,其中包括 ApplicationMaster程序、啟動(dòng) ApplicationMaster的命令、用戶程序等。 2) ResourceManager為該應(yīng)用程序分配第一個(gè) Container,并與對(duì)應(yīng)的NodeManager通信,要 求它在這個(gè)Container中啟動(dòng)應(yīng)用程序的 ApplicationMaster。3) ApplicationMaster首先向ResourceManager 注冊(cè),這樣,用戶可以直接通過(guò) ResourceManager查看應(yīng)用程序的運(yùn)行狀態(tài),然 后,它將為各個(gè)任務(wù)申請(qǐng)資源,并監(jiān)控它的運(yùn)行 狀態(tài),直到運(yùn)行結(jié)束,即重復(fù)步
59、驟47。 4) ApplicationMaster采用輪詢的方式通過(guò)RPC協(xié) 議向ResourceManager申請(qǐng)和領(lǐng)取資源。5) 一旦ApplicationMaster申請(qǐng)到資源后,則與對(duì)應(yīng) 的NodeManager通信,要求其啟動(dòng)任務(wù)。 6)NodeManager為任務(wù)設(shè)置好運(yùn)行環(huán)境(包括環(huán) 境變量、jar包、二進(jìn)制程序等)后,將任務(wù)啟動(dòng)命 令寫(xiě)到一個(gè)腳本中,并通過(guò)運(yùn)行該腳本啟動(dòng)任務(wù)。7)各個(gè)任務(wù)通過(guò)某個(gè)RPC協(xié)議向 ApplicationMaster匯報(bào)自己的狀態(tài)和進(jìn)度,以讓 ApplicationMaster隨時(shí)掌握各個(gè)任務(wù)的運(yùn)行狀態(tài), 從而可以在任務(wù)失敗時(shí)重新啟動(dòng)任務(wù)。在應(yīng)用程序
60、運(yùn)行過(guò)程中,用戶可隨時(shí)通過(guò)RPC向 ApplicationMaster查詢應(yīng)用程序的當(dāng)前運(yùn)行狀態(tài)。 8) 應(yīng)用程序運(yùn)行完成后,ApplicationMaster向 ResourceManager注銷(xiāo),并關(guān)閉自己。3.7.3 MapReduce2 1、MapReduce參數(shù)配置優(yōu)化右圖為MapReduce部分調(diào)整參數(shù)3.7.4 MapReduce性能調(diào)優(yōu)3.8 Spark通用計(jì)算框架3.8.1 Spark簡(jiǎn)介Spark是UC Berkeley AMP Lab (加州大學(xué)伯克利分校AMP實(shí)驗(yàn)室)所開(kāi)源的類(lèi)Hadoop MapReduce的通用并行計(jì)算框架,Spark是為了跟Hadoop配合而開(kāi)發(fā)出
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年多功能酸洗緩蝕劑項(xiàng)目可行性研究報(bào)告
- 2025江西省安全員A證考試題庫(kù)及答案
- 2025年度汽車(chē)配件銷(xiāo)售定制合同范本
- 2024年網(wǎng)絡(luò)安全保密技術(shù)支持與服務(wù)合同3篇
- 2024年運(yùn)輸公司駕駛員勞務(wù)合同與安全保障責(zé)任協(xié)議3篇
- 二零二五年度健康食品供應(yīng)合同范本3篇
- 2025年度辦公樓員工宿舍管理與維修合同3篇
- 2024智能城市綜合管理平臺(tái)建設(shè)合同
- 2024年短視頻內(nèi)容創(chuàng)作與授權(quán)合同帶眉腳
- 2024版商業(yè)物業(yè)租賃協(xié)議附加條款版
- 日拱一卒行穩(wěn)致遠(yuǎn)
- 培訓(xùn)內(nèi)驅(qū)力的課件
- 管理后臺(tái)策劃方案
- 人防、物防、技防工作措施
- 市場(chǎng)部培訓(xùn)課程課件
- 八年級(jí)歷史上冊(cè)論述題匯總
- 資產(chǎn)評(píng)估學(xué)教程(第八版)習(xí)題及答案 喬志敏
- 提高留置針規(guī)范使用率
- 垃圾清運(yùn)服務(wù)投標(biāo)方案(技術(shù)方案)
- 《民俗旅游學(xué)》教學(xué)大綱(含課程思政元素)
- 人教版小學(xué)三年級(jí)上學(xué)期期末數(shù)學(xué)試卷(及答案)
評(píng)論
0/150
提交評(píng)論