2014-07-23 88 views
0

因此,据我了解,当hdfs存储一个块大小为64 MB的bzip2压缩1GB文件时,该文件将被存储为16个不同的块。如果我想在此压缩文件上运行map-reduce作业,map reduce会尝试再次分割文件。为什么mapreduce不会自动使用hdfs中的16个块而不是再次分割文件?为什么mapreduce将压缩文件拆分为输入拆分?

+0

你是什么意思“再次分裂”?你是说MapReduce选择不同于你期望的分割? – climbage

+0

例如,您有自己的输入格式,需要按照序列'abc123'拆分文件。显然,你必须通过文件并重新将其分解。 –

+0

嗨@climbage将文件分割成块存储在hdfs中,并且为map减少作业分割文件是两个独立的进程。我的问题:如果文件在hdfs上以块的形式存储,地图如何以及为什么减少作业再次拆分文件?我希望这个问题更清楚。 – bhuvana

回答

1

我想我明白你的困惑来自哪里。我会尝试清除它。

HDFS将您的文件切成块。这些是文件的物理分区。

MapReduce创建逻辑拆分这些块的顶部。这些分割是基于许多参数定义的,块边界和位置是一个巨大的因素。您可以将最小分割大小设置为128MB,在这种情况下,每个分割可能只有两个64MB块。

所有这些与您的bzip2压缩无关。如果您使用过gzip压缩,则每个分割将是一个完整的文件,因为gzip不是可分割的压缩。