1、 直接在hadoop服務主機上,使用命令的方式調用,執行過程也在服務器上windows
a、把MR程序打包(jar),傳送到服務器上服務器
b、經過: hadoop jar jar路徑 類的全限定名 參數…函數
2、本地測試環境:工具
本地模擬MapReduce任務執行,運行的數據源從遠端的hdfs獲取,運行結果發送到遠端hdfs中。也能夠直接使用本地的文件,下面有說明(推薦方式!)oop
前提條件是:測試
一、在windows下配置hadoop的環境變量(注意你的hadoop是在你的當前系統的版本下編譯的(hadoop的bin,lib/native 目錄依賴當前開發系統。)日誌
path:hadoop
二、拷貝windows模擬hadoop工具(winutils.exe)到HADOOP_HOME/bin(工具能夠網上下載,查找等)開發
三、修改hadoop的源碼(修改的文章很大,能夠網上直接下載別人修改好的或者搜索修改原理本身修改,下圖兩個類是須要修改的類,獲得修改好的以後複製到項目的src下面!!) ,注意:確保項目的jre/lib是真實安裝的jdk的lib(你項目使用的的JDK是你本身安裝的JDK不是IDE自帶的)源碼
四、MR的主函數代碼須要設置這麼一些東西:
Configuration config = new Configuration();
config.set("fs.defaultFS", "hdfs://XXXX:xxxx");
config.set("mapreduce.framework.name", "local");
5. 運行這樣的項目時:運行過程當中的日誌中會出現LocalJobRunner的字眼。
(6.若是你想使用本地的文件,把上述的這個設置更改成:config.set("fs.defaultFS", "file://localhost");)
3、在本地直接調用,執行過程在服務器上(真正企業運行環境)
a、把MR程序打包(jar),放到本地,我放在是桌面上
b、修改hadoop的源碼 ,注意:確保項目的lib須要真實安裝的jdk的lib(你項目使用的的JDK是你本身安裝的JDK不是IDE自帶的)
c、main方法中增長一個配置設置:
config.set("mapred.jar", "C:\\Users\\Administrator\\Desktop\\wc.jar"); 後面是你的MapReducer運行的jar包的位置。
d、把遠端的hadoop的配置文件放到工做目錄的src下面:
e、一樣須要修改源碼...(和上面說的同樣)
f、本地執行main方法。
下面是可能出現的問題:
遠程調用遠程執行,不修改源碼(把兩個包引入),會報以下異常。
遠程調用的時候須要把安裝在遠程的hadoop的配置文件複製到src下面!!不然就報這樣的錯誤了。
歡迎分享更多的問題哦!