2

我明白了

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

如果我尝试将本地文件添加到 hadoop 中的分布式缓存。当文件在 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);

谢谢

4

3 回答 3

2

它必须首先在 HDFS 中。我打算在这里冒险,但我认为这是因为文件被奴隶“拉”到本地分布式缓存中,而不是推送。由于它们被拉出,它们无法访问该本地路径。

于 2012-03-16T16:53:09.363 回答
0

文件可以在本地系统、hdfs、S3 或其他集群中。您需要指定为

-files hdfs:// 如果文件在 hdfs

默认情况下,它假定为本地文件系统。

于 2013-10-23T12:29:44.207 回答
0

不,我不认为你不能把任何东西放在分布式缓存上,除非它首先放在 HDFS 中。所有 Hadoop 作业都使用与 HDFS 相关的输入/输出路径。

于 2012-03-16T17:19:56.237 回答