2011-09-03 28 views

回答

5

映射器(和reducer)就像盒子上的任何其他進程 - 只要TaskTracker用戶有權運行可執行文件,這樣做沒有問題。有幾種方法可以調用外部進程,但由於我們已經在使用Java,所以ProcessBuilder似乎是一個合理的開始。

編輯:剛剛發現的Hadoop有一個明確的類用於此目的:http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/util/Shell.html

+0

只需添加:外殼是可見的包,如果不在包中使用它們,就不能使用它們。 –

+0

java中的Shell類會調用HDFS之外的節點上的進程嗎? – Joris

+0

@chris謝謝 - 這工作!你知道如何設置TaskTracker用戶權限嗎? – Joris

0

這肯定是可行的。您可能會發現最好使用Hadoop Streaming。正如它在該網站上所說:

Hadoop流式傳輸是Hadoop發行版附帶的實用程序。該實用程序允許您使用任何可執行文件或腳本作爲映射器和/或縮減器來創建和運行map/reduce作業。

我傾向於從Hadoop Streaming內部的外部代碼開始。根據您的語言,可能有許多很好的示例說明如何在Streaming中使用它;一旦你進入你選擇的語言,如果需要,你通常可以將數據輸出到另一個程序。我已經用不同的語言編寫了好幾層程序,沒有額外的努力,如果我在普通的Linux機器上運行它,除了使外層使用Hadoop Streaming。

+0

您的鏈接已損壞 –

相關問題