1

我有集群 HDFS 块大小为 64 MB。我有包含 100 个纯文本文件的目录,每个文件的大小为 100 MB。这份InputFormat工作是TextInputFormat。将运行多少个 Mapper?

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

请指导。提前致谢。

4

3 回答 3

4

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

除非当然还有更多未发布的考试问题:

  • 这些“纯”文本文件是否经过 gzip 压缩 - 在这种情况下它们不可拆分?)
  • 集群拆分大小可能是 64MB,但输入文件的分配拆分大小是多少 - 128MB?

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

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

于 2012-10-12T10:42:59.663 回答
0

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

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

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

2)如果我们配置mapred.min.split.size,mapred.max.split.size变量。默认min split size为0,max split size为Long.MAX。

下面是它用来识别映射器数量的函数。

最大值(mapred.min.split.size,最小值(mapred.max.split.size,blocksize))

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

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

于 2012-10-12T10:06:44.010 回答
0

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

于 2015-06-07T20:16:02.277 回答