hadoop - Hadoop 中 HDFS 以外的文件系统如何使用数据局部性?

标签 hadoop amazon-s3 mapreduce hdfs

我们知道 Hadoop 使用数据局部性原则来生成 map-reduce 作业以节省网络带宽。以下是其工作原理的描述:

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

Hadoop tries its best to run map tasks on nodes where the data is present locally to optimize on the network and inter-node communication latency. As the input data is split into pieces and fed to different map tasks, it is desirable to have all the data fed to that map task available on a single node.Since HDFS only guarantees data having size equal to its block size (64M) to be present on one node, it is advised/advocated to have the split size equal to the HDFS block size so that the map task can take advantage of this data localization.

Hadoop 能够运行 map-reduce 作业,即使底层文件系统不是 HDFS(即它可以在其他文件系统上运行,例如 Amazon 的 S3)。现在,在这种情况下如何计算数据局部性?在 HDFS 的情况下,namenode 拥有所有的 block 位置信息,并使用这些信息在尽可能靠近数据的地方生成映射器。然而,在其他文件系统中没有名称节点的概念。那么,Hadoop MapReduce 框架(JobTracker 和 TaskTracker)如何在运行作业时学习数据的位置以应用数据局部性原则?

最佳答案

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

引用:http://wiki.apache.org/hadoop/AmazonS3

关于hadoop - Hadoop 中 HDFS 以外的文件系统如何使用数据局部性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19373231/

相关文章:

hadoop - 名称节点的堆大小与 HADOOP_NAMENODE_OPTS

mongodb - 如何高效地将许多大型 JSON 文件直接从 S3 导入 MongoDB

python - 使用 Python 和 Boto3 列出 S3 存储桶的目录内容?

hadoop - 将数据加载到HBase

hadoop - Hbase连接问题和无法创建表

hadoop - Mapreduce到hbase输出卡在 map 上的比例降低100%

hadoop - Hive 中的增量/增量负载

python - 如何在 aws lambda 中执行 bash 命令

hadoop - NLineInputFormat 无效

parallel-processing - MongoDB:在没有并行性的情况下使用 MapReduce 有什么意义?