2013-10-02 28 views
0

我想要做如下任務:如何使用Eclipse在MapReduce的主節點中調試工作節點?

我跑的MapReduce應用程序,如字計數在主節點的日食,我希望看到的工作節點是如何使用Eclipse的工作,因爲我知道,有一些不同的工作流程在本地mapreduce作業和完全分佈式mapreduce作業之間。

有什麼辦法可以達到這個目的嗎?

回答

1

您可以在本地運行一個任務,請How to Debug Map/Reduce Programs

開始通過讓當地選手的一切運行(很可能是在一個小的輸入)。 您可以通過在您的配置中將作業跟蹤器設置爲「本地」來實現此目的。本地運行器可以在調試器下運行並在您的開發機器上運行。

一個非常快速簡便的方法來設置此配置變量應包括以下行運行作業之前: conf.set("mapred.job.tracker", "local");您也可以做到這一點,使輸入和輸出文件在本地文件系統而不是在Hadoop分佈式文件系統(HDFS)中:conf.set("fs.default.name", "local");

您也可以在hadoop-site.xml中設置這些配置參數。程序運行時,配置文件hadoop-default.xml,mapred-default.xml和hadoop-site.xml應該出現在程序類路徑的某處。

如果你想在調試一個真正集羣的任務,你必須調試選項添加到Java啓動線(如-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000),然後遠程連接Eclipse來等待Java進程。例如,您可以設置mapred.map.child.java.opts。有幾個例子,說明如何做到這一點,altough關於如何做到這一點的具體情況有所不同:

一旦你瞭解我們的目標是要通過-agentlib:...參數傳遞給Java命令行爲了啓用遠程調試器以便Eclipse有附加內容,具體的如何實現變得無關緊要。不過,我會避免hadoop-env.sh修改。

AFAIK Cloudera的有自帶的預配置Eclipse進行局部M/R任務開發一個虛擬機鏡像,見How-to: Use Eclipse with MapReduce in Cloudera’s QuickStart VM

+0

感謝Rusanu!但是,我想知道工作節點如何與這種情況一起工作: 我運行MR應用程序,例如具有大尺寸輸入數據的WordCount。然後,我想看看工作節點如何與來自主節點的給定數據塊或提交的地圖任務一起工作。 –

相關問題