输入分割的数量等于映射器的数量



我正在处理一个带有map reduce的文件,文件大小为1Gb,我在HDFS中的默认块大小为64mb,那么对于这个例子,有多少个输入分割,有多少个映射器?

Number of splits=Number of mappers.

所以如果你的文件大小是1GB(1024/64),你将有16个映射器在运行。

您的输入分割与块大小不同。Block是包含实际数据的物理表示,而input split只是包含分割长度和分割位置的逻辑表示。

然而,映射器的数量也取决于各种因素。

  1. 如果你的文件是压缩的,而这又不是一个可分割的格式,那么你最终会用一个映射器处理整个文件。
  2. 如果在Inputformat类中issplittable()被设置为false,那么你的文件是不可分割的,然后你也会有一个映射器在运行。
  3. reducer必须在驱动程序代码中显式设置。job.setNumReduceTasks()会这样做。如果不设置,则减速器的数量默认为1。

我认为输入分割的次数取决于输入文件的大小。

没有块=没有映射器;如果只有一个文件大小为1gb,块大小为64mb,则没有块(Blocks) => 1026mb/64mb = 16。所以没有映射器= 16。默认情况下,我们只会得到一个Reducer,如果我们想要运行更多的Reducer,你可以设置job.setNumReduceTasks();

最新更新