在Hadoop中,如何将数据位置用于除HDFS之外的文件系统?

时间:2013-10-15 04:19:50

标签: hadoop amazon-s3 mapreduce hdfs

我们知道Hadoop使用数据位置原则来生成map-reduce作业以节省网络带宽。以下是对其工作原理的说明:

取自:http://hadoop-gyan.blogspot.in/

  

Hadoop尽力在数据所在的节点上运行map任务   本地存在以优化网络和节点间   通信延迟。由于输入数据被分成多个部分并被馈送   对于不同的地图任务,希望将所有数据馈送到   该映射任务在单个节点上可用。由于HDFS仅保证   大小等于其块大小(64M)的数据将出现在一个上   建议/建议将分割大小等于HDFS   块大小,以便map任务可以利用此数据   定位。

即使底层文件系统不是HDFS,Hadoop也能运行map-reduce作业(即,它可以在其他文件系统上运行,例如亚马逊的S3)。现在,在这种情况下如何计算数据位置?在HDFS的情况下,namenode具有所有块位置信息,并使用该映射器尽可能接近数据生成。但是,在其他文件系统中,没有namenode的概念。然后,Hadoop MapReduce框架(JobTracker和TaskTracker)如何在运行作业时了解数据的位置以应用数据位置原理?

1 个答案:

答案 0 :(得分:5)

正如您所提到的,像S3这样的文件系统不需要运行namenonde。在这种情况下,数据位置优化不可用。

参考:http://wiki.apache.org/hadoop/AmazonS3