Spark大數(shù)據(jù)分析 課件 4.5 RDD機(jī)制_第1頁(yè)
Spark大數(shù)據(jù)分析 課件 4.5 RDD機(jī)制_第2頁(yè)
Spark大數(shù)據(jù)分析 課件 4.5 RDD機(jī)制_第3頁(yè)
Spark大數(shù)據(jù)分析 課件 4.5 RDD機(jī)制_第4頁(yè)
Spark大數(shù)據(jù)分析 課件 4.5 RDD機(jī)制_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

RDD機(jī)制目錄/Contents01持久化機(jī)制01容錯(cuò)機(jī)制持久化機(jī)制01持久化機(jī)制多次對(duì)某個(gè)RDD進(jìn)行transformation或者action,如果沒(méi)有做RDD持久化,那么每次都要重新計(jì)算一個(gè)RDD,會(huì)消耗大量時(shí)間,降低Spark性能。Spark非常重要的一個(gè)功能特性就是可以將RDD持久化在內(nèi)存中。當(dāng)對(duì)RDD執(zhí)行持久化操作時(shí),每個(gè)節(jié)點(diǎn)都會(huì)將自己操作的RDD的partition持久化到內(nèi)存中,并且在之后對(duì)該RDD的反復(fù)使用中,直接使用內(nèi)存緩存的partition。這樣的話,對(duì)于針對(duì)一個(gè)RDD反復(fù)執(zhí)行多個(gè)操作的場(chǎng)景,就只要對(duì)RDD計(jì)算一次即可,后面直接使用該RDD,而不需要反復(fù)計(jì)算多次該RDD。持久化機(jī)制存儲(chǔ)級(jí)別說(shuō)明

MEMORY_ONLY將RDD以反序列化Java對(duì)象的形式存儲(chǔ)在JVM中。如果內(nèi)存空間不夠,部分分區(qū)將不再緩存,在每次需要用到這些數(shù)據(jù)時(shí)重新進(jìn)行計(jì)算。這是默認(rèn)的存儲(chǔ)級(jí)別。

MEMORY_AND_DISK將RDD以反序列化Java對(duì)象的形式存儲(chǔ)在JVM中。如果內(nèi)存空間不夠,將未緩存的數(shù)據(jù)分區(qū)存儲(chǔ)到磁盤(pán),在需要使用這些分區(qū)時(shí)從磁盤(pán)讀取。

MEMORY_ONLY_SER將RDD以序列化的Java對(duì)象的形式進(jìn)行存儲(chǔ)(每個(gè)分區(qū)為一個(gè)字節(jié)數(shù)組)。這種方式比反序列化的Java對(duì)象節(jié)省空間,但是在讀取時(shí)會(huì)增加CPU的計(jì)算負(fù)擔(dān)。

MEMORY_AND_DISK_SER類似于MEMORY_ONLY_SER,但是溢出的分區(qū)會(huì)存儲(chǔ)到磁盤(pán),而不是在用到它們時(shí)重新計(jì)算。DISK_ONLY只在磁盤(pán)上緩存RDD。

MEMORY_ONLY_2,MEMORY_AND_DISK_2與上面的級(jí)別功能相同,只不過(guò)每個(gè)分區(qū)在集群中兩個(gè)節(jié)點(diǎn)上建立副本。需要加上后綴_2,代表的是將每個(gè)持久化的數(shù)據(jù)都復(fù)制一份副本,并將副本保存到其他節(jié)點(diǎn)上。

OFF_HEAP類似于MEMORY_ONLY_SER,但是將數(shù)據(jù)存儲(chǔ)在off-heapmemory(堆外內(nèi)存),這需要啟動(dòng)off-heap內(nèi)存。持久化機(jī)制1.如何選擇存儲(chǔ)級(jí)別Spark的存儲(chǔ)級(jí)別的選擇,核心問(wèn)題是在內(nèi)存使用率和CPU效率之間進(jìn)行權(quán)衡。2.cache()和persist()的區(qū)別cache()和persist()的區(qū)別在于,cache()是persist()的一種簡(jiǎn)化方式,cache()的底層就是調(diào)用的persist()的無(wú)參版本,同時(shí)就是調(diào)用persist(MEMORY_ONLY),將數(shù)據(jù)持久化到內(nèi)存中。容錯(cuò)機(jī)制02容錯(cuò)機(jī)制Spark的計(jì)算本質(zhì)就是對(duì)RDD做各種轉(zhuǎn)換,因?yàn)镽DD是一個(gè)不可變只讀的集合,因此每次的轉(zhuǎn)換都需要上一次的RDD作為本次轉(zhuǎn)換的輸入,因此RDD的lineage描述的是RDD間的相互依賴關(guān)系。為了保證RDD中數(shù)據(jù)的健壯性,RDD數(shù)據(jù)集通過(guò)所謂血統(tǒng)關(guān)系(lineage)記住了他是如何其他RDD中演變過(guò)來(lái)的。Spark將RDD之間的關(guān)系規(guī)類為寬依賴和窄依賴。Spark會(huì)根據(jù)Lineage存儲(chǔ)的RDD的依賴關(guān)系對(duì)RDD計(jì)算做故障容錯(cuò),目前Spark的容錯(cuò)策略主要是根據(jù)RDD依賴關(guān)系重新計(jì)算、對(duì)RDD做cache、對(duì)RDD做checkpoint手段完成RDD計(jì)算的故障容錯(cuò)。容錯(cuò)機(jī)制SparkRDD實(shí)現(xiàn)基于Lineage的容錯(cuò)機(jī)制,基于RDD的各項(xiàng)transformation構(gòu)成了computechain,在部分計(jì)算結(jié)果丟失的時(shí)候可以根據(jù)Lineage重新恢復(fù)計(jì)算。

(1)在窄依賴中,在子RDD的分區(qū)丟失,要重算父RDD分區(qū)時(shí),父RDD相應(yīng)分區(qū)的所有數(shù)據(jù)都是子RDD分區(qū)的數(shù)據(jù),并不存在冗余計(jì)算。(2)在寬依賴情況下,丟失一個(gè)子RDD分區(qū),重算的每個(gè)父RDD

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論