Hadoop Mapper:适当的输入文件大小?

时间:2012-10-12 09:40:05

标签: hadoop mapreduce

我有群集HDFS块大小为64 MB。我有包含100个纯文本文件的目录,每个文件的大小都是100 MB。该职位的InputFormatTextInputFormat。将运行多少Mappers?

我在Hadoop Developer考试中看到了这个问题。答案是100.其他三个答案选项分别是64,640,200。但我不确定100的答案是什么,或答案是错的。

请指导。提前谢谢。

3 个答案:

答案 0 :(得分:4)

我同意你的评估,这似乎是错误的

当然,除了未发布的考试题外,还有更多内容:

  • 这些'普通'文本文件是否压缩了gzip - 在这种情况下它们是不可拆分的?)
  • 群集分割大小可能是64MB,但是分配的分割大小是什么 - 128MB?

为了公平对待考试题目和“正确”答案,我们需要完整的考试题目。

正确的答案应该是200(如果文件块大小都是默认的64MB,文件未压缩,或者使用可分割的编解码器压缩,如snappy)

答案 1 :(得分:0)

看起来答案对我来说是错误的。

但在以下情况下可能是正确的:

1)如果我们覆盖isSplitable方法并且如果我们返回false,那么map任务的数量将与输入文件的数量相同。在这种情况下,它将是100。

2)如果我们配置mapred.min.split.size,mapred.max.split.size变量。默认情况下,min split size为0,最大分割大小为Long.MAX。

以下是用于识别映射器数量的函数。

max(mapred.min.split.size,min(mapred.max.split.size,blocksize))

在这种情况下,如果我们将mapred.min.split.size配置为100,那么我们将有100个映射器。

但根据给定的信息,我认为100不是正确答案。

答案 2 :(得分:0)

每个文件将被拆分为两个,因为块大小(64 MB)小于文件大小 (100 MB),所以200个映射器将运行