我有集群 HDFS 块大小为 64 MB。我有包含 100 个纯文本文件的目录,每个文件的大小为 100 MB。这份InputFormat
工作是TextInputFormat
。将运行多少个 Mapper?
我在 Hadoop Developer 考试中看到了这个问题。答案是 100。其他三个答案选项是 64、640、200。但我不确定 100 是怎么来的,或者答案是错误的。
请指导。提前致谢。
我同意你的评估,这似乎是错误的
除非当然还有更多未发布的考试问题:
为了公平对待考试问题和“正确”答案,我们需要完整的考试问题。
正确答案应该是 200(如果文件块大小都是默认的 64MB,并且文件要么未压缩,要么使用 snappy 等可拆分编解码器压缩)
看起来答案对我来说是错误的。
但在以下情况下可能是正确的:
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 不是正确答案。
由于块大小 (64 MB) 小于文件大小 (100 MB),每个文件将被拆分为两个,因此将运行 200 个映射器