全部課程
什么是RDD
發(fā)布時(shí)間: 2023-04-18
RDD,彈性分布式數(shù)據(jù)集。它是一種數(shù)據(jù)的集合,它可以被分區(qū),每一個(gè)分區(qū)分布在不同的集群中節(jié)點(diǎn),從而使得RDD可以被并行處理,RDD?提供容錯(cuò)性,它將計(jì)算轉(zhuǎn)換一個(gè)成一個(gè)有向無(wú)環(huán)圖(DAG)的任務(wù)集合,方便利用血緣關(guān)系進(jìn)行數(shù)據(jù)恢復(fù),中間計(jì)算結(jié)果緩存在內(nèi)存。
2.1 迭代計(jì)算
MapReduce在進(jìn)行迭代計(jì)算的時(shí)候,都需要讀寫(xiě)磁盤(pán),如果涉及到多個(gè)作業(yè)流程,那么意味著多次讀寫(xiě)HDFS,所以MapReduce在迭代式計(jì)算的時(shí)候,會(huì)進(jìn)行大量的磁盤(pán)I/O操作
RDD: RDD會(huì)將計(jì)算轉(zhuǎn)換成一個(gè)DAG的任務(wù)集,每次處理完后的數(shù)據(jù)緩存到內(nèi)存中,并且可以作為下一次計(jì)算的輸入數(shù)據(jù),所以只需要一次讀寫(xiě)操作,避免了大量的I/O操作
2.2 容錯(cuò)機(jī)制
基于YARN的MapReduce的Task執(zhí)行過(guò)程產(chǎn)生異常和和JVM的意外終止,會(huì)匯報(bào)給Application Master,任務(wù)失敗一次,并不意味著任務(wù)的完全失敗,它有重試機(jī)制,當(dāng)達(dá)到重試次數(shù)限制還沒(méi)有成功,則認(rèn)為該任務(wù)運(yùn)行失敗
如果ApplicationMaster失敗,那么Resource Manager進(jìn)行失敗檢測(cè)然后重新啟動(dòng)一個(gè)新的Container,然后在這個(gè)Container中啟動(dòng)新的Application Master進(jìn)程。對(duì)于新創(chuàng)建的Application Master,它能夠檢測(cè)到之前失敗的Application Master已經(jīng)運(yùn)行完成的任務(wù),因此,新的Application Master無(wú)需重頭開(kāi)始已經(jīng)執(zhí)行過(guò)的任務(wù)。
RDD: 有兩種容錯(cuò)方式,數(shù)據(jù)檢查點(diǎn)和記錄數(shù)據(jù)的更新。
面向大規(guī)模數(shù)據(jù)分析,數(shù)據(jù)檢查點(diǎn)操作成本很高,需要通過(guò)數(shù)據(jù)中心的網(wǎng)絡(luò)連接在機(jī)器之間復(fù)制龐大的數(shù)據(jù)集,而網(wǎng)絡(luò)帶寬往往比內(nèi)存帶寬低得多,同時(shí)還需要消耗更多的存儲(chǔ)資源。
?上一篇: Oracle數(shù)據(jù)庫(kù)控制臺(tái)常用命令
下一篇: Java線程的狀態(tài)