千鋒教育大數(shù)據(jù)Hadoop全新升級(jí)版入門教程,零基礎(chǔ)從安裝搭建到集群調(diào)優(yōu)
2023-07-20 22:55 作者:bili_76673074185 | 我要投稿

- 用戶調(diào)用
waitForCompletion
方法來(lái)提交作業(yè),并且每秒輪詢作業(yè)的進(jìn)度。內(nèi)部封裝了submit()
方法,用于創(chuàng)建JobCommiter
實(shí)例,并調(diào)用其submitJobInternal
方法。 JobCommiter
實(shí)例向ResourceManager
申請(qǐng)一個(gè)新的應(yīng)用ID,用于標(biāo)識(shí)MapReduce作業(yè)。同時(shí),它會(huì)檢查輸出路徑的情況,并計(jì)算輸入數(shù)據(jù)的分片。- 如果成功獲取到ID,
JobCommiter
會(huì)將作業(yè)所需的資源(包括作業(yè)的JAR文件、配置文件和計(jì)算得到的輸入數(shù)據(jù)分片元數(shù)據(jù)文件)上傳到以ID命名的目錄下的HDFS上。默認(rèn)情況下,副本個(gè)數(shù)是10。 - 準(zhǔn)備工作完成后,
JobCommiter
會(huì)通知ResourceManager
調(diào)用submitApplication
方法來(lái)提交作業(yè)。 ResourceManager
收到submitApplication
方法的調(diào)用后,會(huì)通知Yarn調(diào)度器(Scheduler),調(diào)度器會(huì)分配一個(gè)容器,在節(jié)點(diǎn)管理器的管理下啟動(dòng)應(yīng)用程序主進(jìn)程(Application Master)。- 應(yīng)用程序主進(jìn)程(Application Master)的主類是
MRAppMaster
,它的主要作用是初始化任務(wù),并接收任務(wù)的進(jìn)度和完成報(bào)告。 - 應(yīng)用程序主進(jìn)程從HDFS上獲取資源,主要是數(shù)據(jù)分片(split)。然后,為每個(gè)數(shù)據(jù)分片創(chuàng)建Map任務(wù)和指定數(shù)量的Reduce任務(wù),同時(shí)為任務(wù)分配唯一的任務(wù)ID。
- 應(yīng)用程序主進(jìn)程會(huì)向資源管理器請(qǐng)求容器,首先為Map任務(wù)申請(qǐng)容器,然后為Reduce任務(wù)申請(qǐng)容器。這個(gè)過(guò)程大約占整個(gè)作業(yè)運(yùn)行時(shí)間的5%。
- 一旦資源管理器的調(diào)度器為任務(wù)分配了特定節(jié)點(diǎn)上的容器,應(yīng)用程序主進(jìn)程會(huì)與相應(yīng)的節(jié)點(diǎn)管理器進(jìn)行通信,以啟動(dòng)容器。
- 任務(wù)的運(yùn)行是由YarnChild進(jìn)程來(lái)執(zhí)行的。在運(yùn)行任務(wù)之前,需要將相關(guān)的資源進(jìn)行本地化,包括JAR文件、配置文件和緩存文件。
- 然后,開(kāi)始運(yùn)行Map任務(wù)或Reduce任務(wù)。
- 當(dāng)應(yīng)用程序主進(jìn)程收到最后一個(gè)任務(wù)已完成的通知后,會(huì)將作業(yè)狀態(tài)設(shè)置為成功(success)。然后,作業(yè)會(huì)繼續(xù)輪詢,直到成功完成,然后通知客戶端,并將統(tǒng)計(jì)信息輸出到控制臺(tái)。
這樣,作業(yè)的提交過(guò)程就完成了。整個(gè)過(guò)程涉及到資源的申請(qǐng)、上傳、分配和執(zhí)行任務(wù)的過(guò)程,最終輸出作業(yè)的結(jié)果和統(tǒng)計(jì)信息。
標(biāo)簽: