Hadoop1.x MapReduce 程式執行的詳細過程

hackeruncle發表於2016-07-13
Hadoop1.x MapReduce 程式執行的詳細過程


         1.Job類初始化JobClient例項,JobClient中生成JobTracker的RPC例項,這樣可以保持與JobTracker的通訊,JobTracker的地址和埠等都是外部配置的,透過Configuration物件讀取並且傳入。
        2.JobClient提交作業。
        3.JobClient生成作業目錄。
        4.從本地複製 MapReduce 的作業jar檔案
        5.如果DistributedCache中有需要的資料,從DistributedCache中複製這部分資料。
        6.根據InputFormat例項,實現輸入資料的split,在作業目錄上生成job.split和job.splitmetainfo檔案。
        7.將配置檔案寫入到作業目錄的job.xml檔案中。
        8.JobClient和JobTracker通訊,提交作業。
        9.JobTracker將job加入到job佇列中。
        10.JobTracker的TaskScheduler(任務排程器)對job佇列進行排程。
        11.TaskTracker透過心跳和JobTracker保持聯絡,JobTracker收到後根據心跳帶來的資料,判斷是否可以分配給TaskTracker Task,TaskScheduler會對Task進行分配。
        12.TaskTracker啟動TaskRunner例項,在TaskRunner中啟動單獨的JVM進行Mapper執行。
        13.Map端會從HDFS中讀取輸入資料,執行之後Map輸出資料先是在記憶體當中,當達到閥值後,split到硬碟上面,在此過程中如果有combiner的話要進行combiner,當然sort是肯定要進行的。
        14.Map結束了,Reduce開始執行,從Map端複製資料,稱為shuffle階段,之後執行reduce輸出結果資料。
        15.當jobtracker收到作業最後一個任務完成通知後,便把作業的狀態設定為“完成”。
        16.在jobclient查詢狀態時,便知道任務已經完成,於是從runjob()方法返回。 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30089851/viewspace-2121985/,如需轉載,請註明出處,否則將追究法律責任。

相關文章