从hdfs远程检索文件并将其本地存储在节点中

时间:2013-01-12 13:28:56

标签: hadoop hdfs

我想编写一个作业,其中每个映射器检查来自hdfs的文件是否存储在正在执行的节点中。如果没有发生这种情况,我想从hdfs检索它并将其本地存储在此节点中。这可能吗?

编辑:我正在尝试这样做(3)重新分区加入的预处理,如下所述:link

2 个答案:

答案 0 :(得分:1)

Hadoop中的

DistributedCache功能可用于分发完成作业所需的辅助数据或辅助数据。这里(12)是一些有趣的文章。

答案 1 :(得分:0)

你为什么要这样做? Hadoop使用的数据位置原则为您完成此操作。好吧,它不会移动数据,它会移动程序。

这来自关于Hadoop的维基百科页面:

  

jobtracker安排使用a来映射/减少作业到tasktrackers   了解数据位置。一个例子是节点A   包含数据(x,y,z),节点B包含数据(a,b,c)。该   jobtracker将安排节点B在(a,b,c)上执行map / reduce任务   和节点A将被安排在(x,y,z)

上执行map / reduce任务

Hadoop文档本身解释了计算转移到数据而不是相反的原因:

  

“移动计算比移动数据便宜”如果执行,则应用程序请求的计算效率更高   靠近它运行的数据。当大小时,尤其如此   数据集很大。这最大限度地减少了网络拥塞并增加   系统的整体吞吐量。假设是   通常更好地将计算迁移到更接近数据的位置   找到而不是将数据移动到应用程序所在的位置   运行。 HDFS为应用程序提供了移动自身的接口   离数据所在的位置越近。