尚硅谷大數(shù)據(jù)2023
數(shù)據(jù)計(jì)算模式
批處理
在批處理引擎中,一個(gè)物理數(shù)據(jù)流圖通常被劃分為多個(gè)階段,階段之間根據(jù)依賴關(guān)系按序執(zhí)行,一個(gè)階段只有等其依賴的所有階段都執(zhí)行結(jié)束后才能開始執(zhí)行。
例如,在基于批處理引擎的Spark系統(tǒng)中,將每個(gè)邏輯數(shù)據(jù)流圖根據(jù)給定的并行度轉(zhuǎn)換為物理數(shù)據(jù)流圖后,系統(tǒng)會(huì)根據(jù)數(shù)據(jù)交換將該物理數(shù)據(jù)流圖劃分為多個(gè)階段按序執(zhí)行。如圖3所示,因?yàn)樵诎存I值分組頂點(diǎn)處發(fā)生數(shù)據(jù)交換,所以整個(gè)物理數(shù)據(jù)流圖在此處被切分,形成階段0和階段1兩個(gè)階段。其中,階段1中的數(shù)據(jù)處理依賴于階段0處理后的中間結(jié)果,即2個(gè)階段的執(zhí)行存在先后順序,階段1只有在階段0的處理全部完成后才能開始執(zhí)行。在階段0中,系統(tǒng)啟動(dòng)3個(gè)線程分別處理相互獨(dú)立的3個(gè)分區(qū)中的數(shù)據(jù),并將得到的中間結(jié)果存儲(chǔ)在3個(gè)線程各自的本地磁盤上。等到階段0中的3個(gè)線程都完成處理后,系統(tǒng)開始進(jìn)行階段1的處理,階段1中啟動(dòng)2個(gè)線程分別負(fù)責(zé)2個(gè)分區(qū)的數(shù)據(jù),每個(gè)線程通過(guò)網(wǎng)絡(luò)從階段0的中間結(jié)果處獲取屬于自己的數(shù)據(jù)進(jìn)行后續(xù)處理。
在流計(jì)算引擎中,物理數(shù)據(jù)流圖不會(huì)被劃分為多個(gè)階段。任務(wù)之間的數(shù)據(jù)交換不需要將中