一)任務流程
1)Mapreduce程序啟動一個Jobclient實例,開啟整個mapreduce作業
2)Jobclient通過getnewjobld()j接口向Jobtarker發出請求,以獲得一個新的作業ID。
3)Jobclient根據作業指定的輸入文件計算數據塊的划分,並將完成作業所需要的資源,包括JAR文件,配置文件,數據塊,存放到HDFS中屬於jobtracker的作業ID命令的目錄下,一些文件可能以冗余的方式存放多個節點上。
4)完成上述工作以后,Jobclient通過調用jobTracker的submitjob()接口提交作業。
5)Jobtracker將提交的作業放入一個作業隊列中等待作業的初始化工作,初始化工作主要是創建一個代表此作業的運行對象,作業的運行對象由封裝了作業包含任何的任務和任務運行狀態的記錄信息。
6)Jobtracker需要從HDFS文件系統中取出Jobclient放好的數據,並根據輸入數據創建對應數量的MAP任務,同時根據jobconf配置文件中定義的數量生成reduce任務。
7)Tasktracker和jobtraker間通過心跳信息維持通信,根據這個信息,jobtracker將map任務和reduce任務分配給tasktracker.
8)被分配任務的tasktracker從HDFS文件系統中取出所需的文件,包含JAR文件和任務所對應的數據文件,並保存進本地磁盤,並啟動一個taskrunner程序實例准備運行任務。
9)Tasktracker在虛擬機中根據任務類別創建出map task,或reduce task進行並行運算。
二)mapreduce作業的運行流程
Client:client節點上運行了mapreduce程序和jobclient.負責提交mapreduce
作業和為用戶顯示處理結果。
Jobclient:負責調度協調mareduce作業的執行,是mapreduce的主控節點。分配map任務和reduce執行節點,監控任務的執行。
運行流程:
1)作業的提交
Mapreduce程序啟動一個Jobclient實例,開啟整個mapreduce作業
Jobclient通過getnewjobld()j接口向Jobtarker發出請求,以獲得一個新的作業ID。
Jobclient根據作業指定的輸入文件計算數據塊的划分,並將完成作業所需要的資源,包括JAR文件,配置文件,數據塊,存放到HDFS中屬於jobtracker的作業ID命令的目錄下,一些文件可能以冗余的方式存放多個節點上。
完成上述工作以后,Jobclient通過調用jobTracker的submitjob()接口提交作業。
2)作業的初始化
Jobtracker用隊列機制處理多個請求,收到的請求會放入一個內部隊列中,由作業調度器處理,初始化內容就是創建一個實例,用於后續跟蹤和調度此作業,jobtracker要從分布式文件系統中取出joclient存放的數據分片信息,以此決定創建map任務的數量,並創建實例監控和調度map任務,而需要創建的reduce任務數量由實例配置文件中的參數決定