本文的目的是實如今windows環境下實現模擬運行Map/Reduce程序。最終實現效果:MapReduce程序不會被提交到實際集羣,可是運算結果會寫入到集羣的HDFS系統中。java
操做系統:win7node
eclipse:Version: Mars Release (4.5.0)apache
hadoop:2.5.1windows
System.setProperty("HADOOP_USER_NAME", "root");服務器
本地測試環境(windows):app
在windows的hadoop目錄bin目錄有一個winutils.exeeclipse
一、在windows下配置hadoop的環境變量工具
二、拷貝debug工具(winutils.exe)到HADOOP_HOME/binoop
三、修改hadoop的源碼 ,注意:確保項目的lib須要真實安裝的jdk的lib測試
四、MR調用的代碼須要改變:
a、src不能有服務器的hadoop配置文件
b、在調用是使用:
Configuration config = new Configuration();
config.set("fs.defaultFS", "hdfs://node7:8020");
config.set("yarn.resourcemanager.hostname", "node7");
一、首先下載hadoop包,這裏使用的是hadoop-2.5.1。解壓後的路徑是:E:\hadoop\hadoop-2.5.1
二、下載winutils.exe。將該軟件拷貝到E:\hadoop\hadoop-2.5.1\bin下
三、在windows中配置HADOOP_HOME環境變量爲E:\hadoop\hadoop-2.5.1,並加入到path環境變量中。
四、修改hadoop源碼,在新建的Java project中拷貝下面路徑的Java代碼。路徑保持和原來一致。
org/apache/hadoop/io/nativeio/NativeIO.java
org/apache/hadoop/mapred/YARNRunner.java
五、在java project的buildpath中設置,jdk不要使用eclipse自帶的,修改成本身本地安裝的Jdk。
六、其餘限制條件:
A、src中不能有服務器的hadoop配置文件。
B、在調用時使用下面的代碼:根據實際配置進行修改下面的參數
System.setProperty("HADOOP_USER_NAME", "root"); Configuration config = new Configuration(); config.set("fs.defaultFS", "hdfs://node7:8020"); config.set("yarn.resourcemanager.hostname", "node7");
七、運行代碼:在eclipse中以DEBUG執行main方法便可。能夠在Mapper和Reduce中打斷點調試。