本文的目的是實現在windows環境下實現模擬運行Map/Reduce程序。最終實現效果:MapReduce程序不會被提交到實際集群,但是運算結果會寫入到集群的HDFS系統中。
一、環境說明:
操作系統:win7
eclipse:Version: Mars Release (4.5.0)
hadoop:2.5.1
二、預備文檔(僅是說明,以第三步為准):
System.setProperty("HADOOP_USER_NAME", "root");
本地測試環境(windows):
在windows的hadoop目錄bin目錄有一個winutils.exe
1、在windows下配置hadoop的環境變量
2、拷貝debug工具(winutils.exe)到HADOOP_HOME/bin
3、修改hadoop的源碼 ,注意:確保項目的lib需要真實安裝的jdk的lib
4、MR調用的代碼需要改變:
a、src不能有服務器的hadoop配置文件
b、在調用是使用:
Configuration config = new Configuration();
config.set("fs.defaultFS", "hdfs://node7:8020");
config.set("yarn.resourcemanager.hostname", "node7");
三、基本步驟說明:
1、首先下載hadoop包,這里使用的是hadoop-2.5.1。解壓后的路徑是:E:\hadoop\hadoop-2.5.1
2、下載winutils.exe。將該軟件拷貝到E:\hadoop\hadoop-2.5.1\bin下
3、在windows中配置HADOOP_HOME環境變量為E:\hadoop\hadoop-2.5.1,並加入到path環境變量中。
4、修改hadoop源碼,在新建的Java project中拷貝下面路徑的Java代碼。路徑保持和原來一致。
org/apache/hadoop/io/nativeio/NativeIO.java
org/apache/hadoop/mapred/YARNRunner.java
5、在java project的buildpath中設置,jdk不要使用eclipse自帶的,修改為自己本地安裝的Jdk。
6、其他限制條件:
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");
7、運行代碼:在eclipse中以DEBUG執行main方法即可。可以在Mapper和Reduce中打斷點調試。