文件是否需要在HDFS中才能在分布式缓存中使用?

时间:2012-03-15 23:09:49

标签: hadoop hdfs distributed-cache

我得到了

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);

由于

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

默认情况下它采用本地文件系统。