當我們運行下面的命令,MapReduce的Hadoop的一部分流Hadoop的數據流是如何工作的
Hadoop的罐子/usr/lib/hadoop-mapreduce/hadoop-streamingxxxx.jar - 輸入 - 輸出cities.txt流輸出-mapper/bin/cat -reducer'grep -i CA'
1)基於Java的mapreduce作業是否在後臺工作?
當我們運行下面的命令,MapReduce的Hadoop的一部分流Hadoop的數據流是如何工作的
Hadoop的罐子/usr/lib/hadoop-mapreduce/hadoop-streamingxxxx.jar - 輸入 - 輸出cities.txt流輸出-mapper/bin/cat -reducer'grep -i CA'
1)基於Java的mapreduce作業是否在後臺工作?
你是對的,它是在後臺運行的java代碼。MapReduce作業由StreamJob觸發,Mapper只是指定的命令的包裝,如果它不是java類。
您可以在此article
都映射器和減速器找到你的命令的內部是從標準輸入讀取輸入的可執行文件(逐行),併發射輸出到標準輸出。該實用程序將創建一個作業,將作業提交到適當的羣集,並監視作業的進度直到作業完成。
爲映射器指定可執行文件時,每個映射器任務將在初始化映射器時作爲單獨的進程啓動可執行文件。當映射程序任務運行時,它將其輸入轉換爲行並將行提供給進程的stdin。與此同時,映射器從進程的stdout收集面向行的輸出,並將每行轉換爲一個鍵/值對,將其作爲映射器的輸出進行收集。
當爲reducer指定可執行文件時,每個reducer任務將啓動可執行文件作爲單獨的進程,然後reducer被初始化。在Reducer任務運行時,它將其輸入鍵/值對轉換爲行並將行提供給進程的stdin。同時,減速器從過程的stdout收集面向行的輸出,將每行轉換爲鍵/值對,將其作爲減速器的輸出收集。