当我在mapreduce框架中设置拆分大小大于实际块大小时会发生什么



据我所知,一个映射器将被分配给一个拆分。

但是,当我输入拆分大小大于实际块大小时会发生什么?

例如:如果我输入块大小= 128 Mb和拆分大小= 130 Mb,在这种情况下将运行多少个映射器。是一个映射器还是多个映射器?

如果 InputSplit 超过 HDFS 块大小,映射器最终会从多个块读取数据。
在您的示例中,如果块大小 = 128 MB 且计算拆分大小 = 130MB,则将生成一个 Map 任务,该任务将从两个不同的块读取

如何准确读取这两个块由HDFS层抽象。

可以设置比块大小更多的拆分大小。但在这种情况下,要获得一个拆分映射器,应该从 hdfs 中读取几个块,这可能会导致网络传输,因为块 n 和块 n+1 可能不位于一个数据节点中。

在您的示例中,如果您设置 splitsize=130mb 并且输入数据是一个 130mb 文件,那么您将有 1 个映射器。

最新更新