2012-03-15 6 views
2

私はHadoopの中に分散キャッシュにローカルファイルを追加しようとした場合、私はファイルを分散キャッシュで使用するにはHDFSに入れる必要がありますか?

Exception in thread "main" java.lang.IllegalArgumentException: Wrong FS: file:/path/to/my.jar, expected: hdfs://ec2-xx-xx-xx-xxx.compute-1.amazonaws.com 

を取得します。ファイルがHDFS上にあるとき、私はこのエラーを表示しません(明らかに、期待されるFSを使用しているので)。最初にhdfsにコピーすることなく、分散キャッシュ内のローカルファイルを使用する方法はありますか?ここでは、コードスニペットは次のとおりです。

Configuration conf = job.getConfiguration(); 
FileSystem fs = FileSystem.getLocal(conf); 
Path dependency = fs.makeQualified(new Path("/local/path/to/my.jar"); 
DistributedCache.addArchiveToClassPath(path, conf); 

おかげ

答えて

2

それは最初のHDFSにしておく必要があります。ここでは外に出ていくつもりですが、ファイルがプッシュされていないスレーブによってローカルの分散キャッシュに「引き込まれる」ためだと思います。それらは引っ張られているので、そのローカルパスにアクセスする手段はありません。

0

いいえ、私はあなたがHDFSに入っていなければ何も分散キャッシュに置くことはできません。すべてのHadoopジョブは、HDFSとの関係で入出力パスを使用します。

0

ファイルは、ローカルシステム、hdfs、S3または他のクラスタのいずれかにもあります。あなたは

-filesのHDFSとして指定する必要があります://ファイルは、ローカルファイルシステムを前提とし、デフォルトでは、HDFSに

ある場合。

関連する問題