输入拆分的数量等于映射器的数量?

时间:2015-10-07 12:03:27

标签: hadoop mapreduce hdfs mapper input-split

我正在处理带有map的一个文件reduce文件大小是1Gb而我在HDFS中的默认块大小是64 MB所以对于这个例子,有多少输入拆分和有多少映射器?

2 个答案:

答案 0 :(得分:0)

Number of splits=Number of mappers.

因此,如果您的文件大小为1GB(1024/64),则将运行16个映射器。

您的输入拆分与块大小不同。块是包含实际数据的物理表示,但输入拆分只是一个逻辑表示,它只包含拆分长度和拆分位置。

然而,地图绘制者的数量也取决于各种因素。

  1. 如果您的文件被压缩而不是可拆分格式,那么最终会有一个映射器处理整个文件。
  2. 如果Inputformat类中的issplittable()设置为false,那么您的文件不可拆分,那么您也将运行一个映射器。
  3. 必须在驱动程序代码中明确设置减少器。 job.setNumReduceTasks()会这样做。如果未设置,则默认情况下减速器的数量为1。
  4. 我认为输入拆分的数量取决于输入文件的大小。

答案 1 :(得分:-1)

没有块=没有Mappers; 如果只有一个文件的大小为1 GB,块大小为64 MB,则没有块(块)=> 1026 MB / 64 MB = 16。所以没有mappers = 16。  默认情况下,我们只会获得一个Reducer,如果我们想运行更多的reducer,你可以设置job.setNumReduceTasks();