2017-05-27 94 views
0

我還是新的hadoop,我試圖讓this example工作。hadoop streaming無效的DFS目錄名稱

我能夠安裝hadoop並運行wordcountmapreduce示例,一切都很好。但是我得到一個java.lang.IllegalArgumentException: Invalid DFS directory name異常,當我使用hadoop 2.6.0

這裏運行windows 7一個hadoopstreaming command是我的命令:

hadoop jar %HADOOP_PREFIX%\share\hadoop\tools\lib\hadoop-streaming-2.6.0.jar -mapper mapper.php -reducer reducer.php -input input/* -output output 

如果我跑比如從文件夾中的命令d:\hadoop顯示錯誤變爲:

java.lang.IllegalArgumentException: Invalid DFS directory name /d:/hadoop 

輸出目錄是在錯誤顯示並且作業失敗之前創建的。

我試圖搜索命令來設置分佈式文件的位置,但我沒有找到類似的東西。

任何意見,將不勝感激。

回答

0

輸入和輸出路徑應該是hdfs而不是local filesytem路徑。您所提供的輸入路徑d:/hadoop這是local filesystem

你必須找到hdfs路徑(他們通常居住在/user/<hadoop username>

假設你hadoop userAhmed,將下面的命令應該給你的所有目錄在hdfs主文件

hadoop dfs -ls 

相當於

hadoop dfs -ls /user/Ahmed/ 

所以跟蹤HDFS文件的位置,並把它傳遞給-input argument爲(假設/user/Ahmed/input是路徑)

hadoop jar %HADOOP_PREFIX%\share\hadoop\tools\lib\hadoop-streaming-2.6.0.jar -mapper mapper.php -reducer reducer.php -input /user/Ahmed/input 
+0

謝謝Ramesh,但我仍然得到相同的錯誤。我確信這些文件是在hdfs路徑中添加的,當我運行「hadoop dfs -ls」時,我可以看到它們列出,並且確保輸入文件相對於hdfs路徑設置。但我仍然無效的路徑,它打印當前目錄我在嘗試給輸入文件的錯誤路徑,它給出了一個不同的錯誤,所以它看到我的輸入文件。我想這意味着它是別的東西? –

+0

您是否可以使用上述註釋中執行的所有步驟更新您的問題?所以我可以看看細節。 「hadoop-streaming-2.6.0.jar」是你創建的嗎? –

+0

不,我下載了一個已經編譯好的windows hadoop文件,它有所有jar文件,包括wordcount示例和流媒體jar。我沒有真正添加任何額外的步驟,我只是確保輸入和輸出路徑是hdfs路徑,正如您指出的 –

0

感謝拉梅什我發現我的HDFS命令是在當前目錄上HDFS位置運行不。所以像「hdfs dfs -ls /」這樣的命令列出了我所處的目錄,而不是hadoop分佈式文件系統上的內容。

原來是配置問題。我必須確保fs.defaultFS在core-site.xml和hdfs-site.xml中正確設置。

+0

很高興聽到你想出了它:) –