2015-04-20 85 views
0

我已經在三臺機器上構建了Hadoop集羣;這些都是特性:mapreduce任務只能在namenode上運行

  • OS:Ubuntu14.04LTS
  • 的Hadoop:2.6.0
  • NameNode和ResourceManager的IP:名稱節點/ 192.168.0.100
  • 數據管理部也作爲NodeManger IP:DATA1/192.168 .0.101,data2/192.168.0.102

我已經將所有xml文件都配置爲官方文檔。當我在eclipse中執行wordcount示例程序時,我想要顯示機器信息,它運行mapTask或reduceTask,所以這裏是我的代碼片段。

//get localhost 
InetAddress mLocalHost = InetAddress.getLocalHost(); 
System.out.println("Task on " + mLocalHost); 

上面的代碼段被放入地圖並減少函數並在hadoop上運行它。不過控制檯總是顯示:

Task on namenode/192.168.0.100 

從我的角度來看,這些任務應該在data1或data2上運行。你能解釋一下這個難題嗎?我的羣集有什麼問題?

Whats more?

jobHistory(namenode:19888)沒有記錄任何內容。

和webAppProxy(namenode:8088)只顯示活動節點:2,但沒有關於工作的更多信息。

你能幫助我嗎?非常感謝。下面

的NameNode的進一步信息,

JPS命令顯示:

12647 JPS

11426 SecondaryNameNode

11217的NameNode

11585 ResourceManager的

12033 JobHistoryServe

+0

我認爲你應該打印完整的日誌跟蹤。 – frb

回答

0

你把那段代碼放在哪裏,它在你的Driver類中?您需要將其放入映射器或縮減器中,以便您可以查看正在處理的節點。

取而代之的是,你可以看看資源管理器web ui rmipaddress:8088,它會給你更多關於哪個節點正在執行映射器和其他日誌的詳細信息。

0

我發現什麼是我的問題錯了。 Eclipse中的「在hadoop上運行」只是在本地啓動作業,所以我應該修改Eclipse插件子目錄下的MyHadoopXML.xml文件。否則,我只是在本地開發並調試mapreduce作業,然後將項目導出到jar中,然後使用羣集中的「hadoop jar」命令運行jar以驗證作業是否成功執行。