1. 程式人生 > >Hadoop系列 - 本地除錯程式碼(不使用jar包)

Hadoop系列 - 本地除錯程式碼(不使用jar包)

問題

最近學習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, 查詢狀態等功能。