Hadoop mapreduce的核心組件
1.Child
該類主要用來啟動一個 jvm 進程 ,map任務和reduce任務都在這個子容器裡面運行。
2.TaskUmbilicalProtocol
由於TaskTracker 和 reduce任務、map任務分別執行在不同的jvm進程中,並通過RPC通信,TaskUmbilicalProtocol是 Child 進程與 TaskTracker 的通信協議。
3.TaskRunner
用於啟動 Child 進程,Child啟動的環境和參數會被其寫入一個shell文件中,然後由ShellCommandExecutor 最終啟動。
4.TaskReporter
將 Child jvm 中 map任務或reduce任務的進度上報給 TaskTracker 。
5.MapTask
map child jvm 要執行的任務,當其 run() 方法返回時,map child jvm 生命周期結束,將被TaskTracker kill 掉。
5.MapOutputCollector
map結果收集器,當mapred.reduce.tasks=0(default :1)時,map的結果將落地到HDFS中,否則落地到map child jvm 所在的本地文件系統。
6.ReduceTask
reduce child jvm要執行的任務,當其 run() 方法返回時,reduce child jvm 生命周期結束,將被TaskTracker kill 掉。
7.ReduceCopier
用於拷貝該 ReduceTask 實例所對應的 MapTask 實例的輸出文件,拷貝哪些MapTask實例的輸出文件 由HashPartitioner 決定。
8.LocalFSMerger
合併 從map端拷貝的,落地在磁碟的文件。從 reduce端拷貝數據,可能會落地到reduce child jvm 進程的內存,或者該進程的本地文件。
9.InMemFSMergeThread
合併 從map端拷貝的,落地在 reduce child jvm 內存中的數據文件
10.GetMapEventsThread
reduce child jvm進程的一個後台線程,每隔 1s 去輪詢 該ReduceTask 實例對應的 map 任務實例的輸出完成情況.
11.MapOutputCopier
reduce child jvm進程的一個後台線程,用來從 map端 copy 數據文件到 reduce端。
推薦閱讀:
※大數據2016年大事記
※《Machine Learning:Clustering & Retrieval》課程第3章KMeans之並行化
TAG:Hadoop |