我有一个2节点的hadoop(1个是主/从,另一个是从)设置和4个大小为1gb的输入文件。当我将dfs.replicate设置为2时,整个数据被复制到两个节点上,这是可以理解的。但我的问题是,我如何看待单节点设置的性能改进(几乎是原来的两倍),因为在2节点的情况下,map reduce仍然会运行在两个系统上的完整数据集上,以及将输入从2个Map器传输到reducer的额外开销。
另外,当我将复制设置为1时,整个数据只存在于主节点上,这也是可以理解的,以避免以太网开销。但即使在这种情况下,我也看到了与单节点设置相比的性能改进,这让我感到困惑,因为map reduce在本地数据集上运行,所以这种场景本质上应该类似于单节点设置,在整个数据集的主节点上运行一个map reduce程序??
有人能帮我理解我在这里错过了什么吗???
谢谢帕万
1条答案
按热度按时间jecbmhm31#
帕万,
在两节点情况下,map reduce作业不会在整个数据集上运行。mapreduce在hdfs块中运行,根据您的配置,hdfs块的大小为64 mb或更大。您的1GB被分割成块并分布在集群节点上。这些块中的一部分在节点1上处理,另一部分在节点2上处理,但没有重复。复制因子只会增加数据的可用性和对节点故障的容忍度。它不会复制任务。
结果是,从处理的Angular 来看,数据在节点1和节点2之间被分割并被处理。也就是说,如果你充分而正确地利用了你的处理能力,你的速度理论上会翻倍。
干杯