映射阶段使用的空间量

时间:2014-03-20 13:46:48

标签: hadoop mapreduce

我是hadoop的新手,我开始想知道:地图阶段的结果放置了多少磁盘空间?我指的是地图的输出和reduce的输入。

这取决于执行的算法? hadoop的设置和配置?节点数量?

1 个答案:

答案 0 :(得分:4)

  

这取决于执行的算法?

肯定是的。想象一下,发射(a, b)的地图函数和发出(a,b) (b,a)的另一个地图函数。第二个数据发出的数据是第一个数据的两倍。

  

hadoop设置和配置?

是的,您可以设置hadoop来压缩地图输出(conf.set("mapreduce.map.output.compress", true))。此外,您可以选择不同的压缩选项,如gzip,bzip2等。有关选择正确压缩选项的更多详细信息,请参见here

此外,hadoop提供了一些可变长度格式类型,如整数的VIntWritable,可以节省大量空间。变量长度格式类型需要尽可能多的字节来存储它们的值,例如,当存储为VIntWritables时,小数字占用的字节数比大数字少。

  

节点数量?

在这里,我会说不(我不确定,但我不能想到这会如何影响)。但是,它取决于映射器的数量,以及输入数据的大小。例如,想象一下,您希望为每个输入键映射尽可能多的(键,值)对,作为映射器的数量。如果你有更大的数据,那么你可能有更多的映射器......或者更简单地说,你为映射器的每个输入键输出一个(键,值)对。更多数据 - >更大的产量。