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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MapReduce 執行全過程解析
- MapReduce過程詳解
- MapReduce程式執行流程
- 程式執行過程記憶體分析詳解記憶體
- Java 程式執行過程Java
- 程式、執行緒詳細梳理執行緒
- 一條 sql 的執行過程詳解SQL
- 程式語言執行過程
- 淺析Java程式的執行過程Java
- 程式碼精簡執行過程
- 泊松過程的詳細理解
- 一個 java 檔案的執行過程詳解Java
- 指令的執行過程
- jsp的執行過程JS
- nginx配置https詳細過程NginxHTTP
- MySQL MHA詳細搭建過程MySql
- MapReduce執行流程
- MapReduce的執行流程概述
- webpack loader 的執行過程Web
- Redis 命令的執行過程Redis
- 執行緒池建立執行緒的過程執行緒
- 一個簡單java程式的執行全過程Java
- centos7安裝的詳細過程CentOS
- 2、超詳細的域滲透過程
- hadoop的mapreduce串聯執行Hadoop
- 通過 HelloWorld 瞭解 Java 程式執行過程以及執行時記憶體Java記憶體
- MapReduce如何作為Yarn應用程式執行?Yarn
- javascript引擎執行的過程的理解--執行階段JavaScript
- 一條Sql的執行過程SQL
- Javascript中new的執行過程JavaScript
- Flink 的執行架構詳細剖析架構
- Visual Studio 2010詳細安裝過程
- mysql5.7.23安裝詳細過程MySql
- MySQL探祕(二):SQL語句執行過程詳解MySql
- 使用MapReduce執行WordCount案例
- 超詳細的ArrayList擴容過程(配合原始碼詳解)原始碼
- 細述程式語言的發展過程
- js函式執行過程的探究JS函式
- 原始碼分析OKHttp的執行過程原始碼HTTP