因此,据我所知,当hdfs存储一个块大小为64mb的bzip2压缩的1gb文件时,该文件将被存储为16个不同的块。如果要在此压缩文件上运行map reduce作业,map reduce会再次尝试拆分该文件。为什么mapreduce不自动使用hdfs中的16个块,而不是再次拆分文件?
dly7yett1#
我想我知道你的困惑是怎么来的了。我会设法弄清楚的。hdfs将您的文件分割成块。这些是文件的物理分区。mapreduce在这些块的顶部创建逻辑拆分。这些分割是基于许多参数定义的,块边界和位置是一个很大的因素。您可以将最小分割大小设置为128mb,在这种情况下,每个分割可能正好是两个64mb块。所有这些都与bzip2压缩无关。如果使用了gzip压缩,则每个分割都将是一个完整的文件,因为gzip不是可分割的压缩。
1条答案
按热度按时间dly7yett1#
我想我知道你的困惑是怎么来的了。我会设法弄清楚的。
hdfs将您的文件分割成块。这些是文件的物理分区。
mapreduce在这些块的顶部创建逻辑拆分。这些分割是基于许多参数定义的,块边界和位置是一个很大的因素。您可以将最小分割大小设置为128mb,在这种情况下,每个分割可能正好是两个64mb块。
所有这些都与bzip2压缩无关。如果使用了gzip压缩,则每个分割都将是一个完整的文件,因为gzip不是可分割的压缩。