1

我有 2 个节点集群(v1.04),主节点和从节点。在 master 上,我们在using中Tool.run()添加两个文件。HDFS 中确实存在文件。在 Mapper.setup() 中,我们希望使用从缓存中检索这些文件DistributedCacheaddCacheFile()

FSDataInputStream fs = FileSystem.get( context.getConfiguration() ).open( path ). 

问题是对于一个文件 aFileNotFoundException被抛出,尽管该文件存在于从节点上:

attempt_201211211227_0020_m_000000_2: java.io.FileNotFoundException: File does not exist: /somedir/hdp.tmp.dir/mapred/local/taskTracker/distcache/-7769715304990780/master/tmp/analytics/1.csv

ls –l 在从站上:

[hduser@slave ~]$ ll /somedir/hdp.tmp.dir/mapred/local/taskTracker/distcache/-7769715304990780/master/tmp/ analytics/1.csv                        
-rwxr-xr-x 1 hduser hadoop 42701 Nov 22 10:18 /somedir/hdp.tmp.dir/mapred/local/taskTracker/distcache/-7769715304990780/master/tmp/ analytics/1.csv

我的问题是:

  1. 不应该所有文件都存在于所有节点上吗?
  2. 应该怎么做才能解决这个问题?

谢谢。

4

1 回答 1

4

已解决 - 应该使用过:

FileSystem.getLocal( conf ) 

感谢来自 Hadoop 邮件列表的 Harsh J。

于 2012-11-22T21:18:15.297 回答