我是hadoop的新手,我开始想知道:地图阶段的结果放置了多少磁盘空间?我指的是地图的输出和reduce的输入。
这取决于执行的算法? hadoop的设置和配置?节点数量?
答案 0 :(得分:4)
这取决于执行的算法?
肯定是的。想象一下,发射(a, b)
的地图函数和发出(a,b)
和 (b,a)
的另一个地图函数。第二个数据发出的数据是第一个数据的两倍。
hadoop设置和配置?
是的,您可以设置hadoop来压缩地图输出(conf.set("mapreduce.map.output.compress", true)
)。此外,您可以选择不同的压缩选项,如gzip,bzip2等。有关选择正确压缩选项的更多详细信息,请参见here。
此外,hadoop提供了一些可变长度格式类型,如整数的VIntWritable,可以节省大量空间。变量长度格式类型需要尽可能多的字节来存储它们的值,例如,当存储为VIntWritables时,小数字占用的字节数比大数字少。
节点数量?
在这里,我会说不(我不确定,但我不能想到这会如何影响)。但是,它取决于映射器的数量,以及输入数据的大小。例如,想象一下,您希望为每个输入键映射尽可能多的(键,值)对,作为映射器的数量。如果你有更大的数据,那么你可能有更多的映射器......或者更简单地说,你为映射器的每个输入键输出一个(键,值)对。更多数据 - >更大的产量。