Hadoop系列 - 本地除錯程式碼(不使用jar包)
阿新 • • 發佈:2018-12-01
問題
最近學習Hadoop過程中遇到這樣一個問題:本地開發mapreduce程式,如果mapreduce到輸入和輸出都是設定本地,那麼是可以進行本地Debug的。但是在我把輸入源設成伺服器的HDFS,輸出設為HBase時,發現應用啟動就報某個mapper或Outputformat類找不到;經過幾天摸索,終於找到解決辦法;
解決方法
專案配置檔案mapred-site.xml增加配置:
<property> <name>mapreduce.framework.name</name> <value>local</value> </property>
配置解讀:
一,本地模式(LocalJobRunner實現)
mapreduce.framework.name設定為local,則不會使用YARN叢集來分配資源,在本地節點執行。在本地模式執行的任務,無法發揮叢集的優勢。注:在web UI是檢視不到本地模式執行的任務。
二,Yarn模式(YARNRunner實現)
mapreduce.framework.name設定為yarn,當客戶端配置mapreduce.framework.name為yarn時, 客戶端會使用YARNRunner與服務端通訊, 而YARNRunner真正的實現是通過ClientRMProtocol與RM互動, 包括提交Application, 查詢狀態等功能。