我需要群集的每个节点从hdfs检索1GB的文件。我使用FileSystem的copyToLocalFile方法。但是,每个节点而不是整个文件(1GB)检索了大约50MB的文件,然后代码继续运行。结果我的工作失败了。为什么会发生这种情况?有没有办法“等待”直到整个文件复制到本地fs?
编辑:我的映射器类检查文件是否存在于节点的本地fs中,如果不是,则将其检索。这是在setup()函数中完成的。
最佳答案
在您的上一次修改中:
EDIT: My mapper class checks if the file exists in node's local fs and if it is not it retrieves it.This is done in setup() function.
您所描述的恰好是DistributedCache设计的目的-它可以确保在任何Map / Reduce任务在该节点上运行之前,将文件复制到每个Task Tracker。
关于hadoop - hadoop:FileSystem的copyToLocalFile方法无法复制整个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14816403/