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

时间:2017-04-03 19:17:41

标签: java hadoop mapreduce mapper reducers

据我所知,将为一次拆分分配一个映射器。

但是当我将Split大小放入实际Block大小时会发生什么?

例如:如果我将Block size = 128 Mb和Split Size = 130 Mb,那么在这种情况下将运行多少个映射器。它是一个映射器还是多个映射器?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

如何读取这两个块是由HDFS层提取的。