2017-05-27 11 views
0

私はまだhadoopで新しく、this exampleを取得しようとしていました。hadoop streaming無効なDFSディレクトリ名

私はhadoopをセットアップして、wordcountmapreduceの例を実行できましたが、すべて正常です。私はここでhadoop 2.6.0

を使用してwindows 7hadoopstreaming commandを実行したときしかし、私はjava.lang.IllegalArgumentException: Invalid DFS directory name例外を取得しています私のコマンドです:

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

入力パスと出力パスは、local filesytemパスではなく、hdfsである必要があります。あなたはあるd:/hadoopとして入力パスを提供しているlocal filesystem

あなたが(彼らは通常/user/<hadoop username>に常駐)

は、次のコマンドを適用すると、あなたのすべてのディレクトリを与える必要があり、あなたのhadoop userAhmedであると仮定すると、hdfsでパスを見つける必要がありますそしてhdfs家庭内のファイルは

hadoop dfs -ls 

に相当します

だから、HDFSファイルの場所を追跡し、(/user/Ahmed/inputを仮定すると、パスである)として-input argumentに渡しラメシュへ

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ファイルをダウンロードしましたが、wordcountの例とstreaming jarを含むすべてのjarファイルがありました。私は実際に余分なステップを追加していませんでした。入力した出力パスがhdfsパスであることを確認しました。 –

0

おかげで私は私のHDFSコマンドは、現在のディレクトリにないHDFSの場所で実行されていたことに気づきました。だから、 "hdfs dfs -ls /"のようなコマンドは、hadoop分散ファイルシステム上のディレクトリではありません。

設定で問題があることが判明しました。 fs.defaultFSがcore-site.xmlとhdfs-site.xmlに正しく設定されていることを確認しなければなりませんでした。

+0

あなたがそれを理解したことを聞いて偉大な:) –

関連する問題