加速開發 ! 在 windows 開發 hadoop 程式直接運行 map/reduce
陳威宇
狀況 !!• 一般而言,常在 windows 上開發 hadoop 的程式,會用的方法都是,先開發程式,打包成 jar ,丟到 linux 平台 run ,有錯再回來修改,打包, run ,無限循環• 以下的方法可以讓你直接在 eclipse 上直接 run ,並立馬看結果與錯誤訊息等,都可以在 eclipse 上直接看,並且可使用 debug 模式了解每一行程式運作的過程
開發 / 修正 hadoop map-reduce 程式
Export/Build package 成 jar
上傳 hadoop 平台 執行 hadoop jar 等待運作結果
找 log 察錯誤
驗證結果 正確
(15s) (5s) (1min~)
(1min~)
(1min~)
開發 / 修正 hadoop map-reduce 程式
執行 hadoop jar 等待運作結果找 log 察錯誤
驗證結果 正確(2s)
(10s) (10s)
eclipse eclipse linux linux linux
linux
eclipse eclipse eclipse
eclipse
Windows 上開發 map reduce 程式 => 需跨兩個平台, run 一次至少 3 分鐘以上
直接運行 => 直接在編輯器上, run 一次 22 秒 左右完成 節省 87% 以上的執行時間
四步驟,即可在 windows 上編譯運作hadoop mapreduce 程式此方法可以提升在windows 上開發mapreduce 程式的 productivity
Ps : Linux 上用eclipse 開發,用原生的 hadoop source 即可配置,直接運行
• 下載 http://crawlzilla.nchc.org.tw/hadoop/hadoop_lib_workspace.zip• 到指定的目錄下,如 D:\waue\ • 解壓縮後, D:\waue\hadoop_lib_workspace 多了兩個資料夾 bin , lib
1. 設定 hadoop windows library╚ 1.1 下載 hadoop windows lib 編譯檔
注意 !! 在此提供的是 windows 7 / 64 bit 編譯後的 hadoop.dll 與 winutils.exe , win 7 / 32bit 應該無法使用,請自行在網路上找別人編譯過檔案來放
• 將剛剛下載的 D:\waue\hadoop_lib_workspace\bin 加入到 user path 中
1. 設定 hadoop windows library ╚ 1.2 設定 user path
此步驟可以解決 Error Message : .NativeIO$Windows.access0(Ljava/lang/String;I)Z
• 建立 java 專案 ( Source code 可參考以下,則一即可 ) – https://dzone.com/articles/hadoop-basics-creating
– https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html
2. 建立 eclipse hadoop project ╚ Build project
• Add external jars => D:\waue\hadoop_lib_workspace\lib
2. 建立 eclipse hadoop project ╚ Add external jars (1)
• Add external jars => D:\waue\hadoop_lib_workspace\lib
2. 建立 eclipse hadoop project ╚ Add external jars (2)
• Add external class => D:\waue\hadoop_lib_workspace\bin
2. 建立 eclipse hadoop project ╚ Add external class (1)
• Add external class => D:\waue\hadoop_lib_workspace\bin
2. 建立 eclipse hadoop project ╚ Add external class (2)
• HADOOP_HOME => D:\waue\hadoop_lib_workspace
3. run config 中 設定╚ 設定 hadoop_home
4. run java application
結果可以達到跟編寫一般 java 程式般,簡單開發 map reduce 程式