2

我有一个 2 节点 hadoop(1 是主/从和另一个从)设置和 4 个输入文件,每个文件大小为 1GB。当我将 dfs.replicate 设置为 2 时,整个数据都会复制到两个节点,这是可以理解的。但我的问题是,我如何看到单个节点设置的性能改进(几乎是两倍),因为在 2 节点的情况下,map-reduce 仍将在两个系统上运行完整的数据集以及添加的将输入从 2 个映射器引导到减速器的开销。

此外,当我将复制设置为 1 时,整个数据仅存在于主节点上,这也是可以理解的,以避免以太网开销。但即使在这种情况下,与单节点设置相比,我也看到了性能提升,这让我感到困惑,因为 map-reduce 在本地数据集上运行,这种情况本质上应该类似于在主节点上运行一个 map-reduce 程序的单节点设置整个数据集上的节点??

有人可以帮我理解我在这里缺少什么吗???

谢谢帕万

4

1 回答 1

2

帕万,

在两个节点的情况下,map reduce 作业不会在整个数据集上运行。MapReduce 在 HDFS 块中运行,根据您的配置,大小为 64 MB 或更大。您的 1 GB 被分成块并分布在集群节点上。其中一些块在节点 1 上处理,另一个在节点 2 上处理,但没有重复。复制因子只会增加数据的可用性和对节点故障的更大容忍度。它不会重复任务。

结果是,从处理的角度来看,数据在节点 1 和节点 2 之间拆分并被处理。这意味着,如果您充分和正确地利用您的处理能力,那么理论上您的速度就会提高一倍。

干杯抹布

于 2013-04-17T11:53:01.100 回答