我有群集HDFS块大小为64 MB。我有包含100个纯文本文件的目录,每个文件的大小都是100 MB。该职位的InputFormat
为TextInputFormat
。将运行多少Mappers?
我在Hadoop Developer考试中看到了这个问题。答案是100.其他三个答案选项分别是64,640,200。但我不确定100的答案是什么,或答案是错的。
请指导。提前谢谢。
答案 0 :(得分:4)
我同意你的评估,这似乎是错误的
当然,除了未发布的考试题外,还有更多内容:
为了公平对待考试题目和“正确”答案,我们需要完整的考试题目。
正确的答案应该是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个映射器将运行