hadoop中除了hdfs之外,其他文件系统如何利用数据局部性?

4urapxun  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(301)

我们知道hadoop使用数据局部性原则来生成map reduce作业以节省网络带宽。以下是对其工作原理的描述:
摘自:http://hadoop-gyan.blogspot.in/
hadoop尽力在数据本地存在的节点上运行map任务,以优化网络和节点间通信延迟。当输入数据被分割成若干块并馈送到不同的map任务时,最好将馈送到该map任务的所有数据都放在一个节点上。因为hdfs只保证大小等于其块大小(64m)的数据出现在一个节点上,建议/提倡分割大小等于hdfs块大小,以便map任务可以利用这种数据本地化。
hadoop能够运行map reduce作业,即使底层文件系统不是hdfs(也就是说,它可以在其他文件系统上运行,比如amazon的s3)。现在,在这种情况下,如何解释数据位置?在hdfs的情况下,namenode拥有所有的块位置信息,并使用这些信息生成尽可能接近数据的Map器。但是,在其他文件系统中,没有namenode的概念。那么,hadoopmapreduce框架(jobtracker和tasktracker)如何学习数据的位置,以便在运行作业时应用数据局部性原则呢?

lyr7nygr

lyr7nygr1#

正如您所提到的,像s3这样的文件系统不需要namende来运行。在这种情况下,数据局部性优化不可用。
参考文献:http://wiki.apache.org/hadoop/amazons3

相关问题