【发布时间】:2017-08-28 18:58:29
【问题描述】:
据我所知,一个映射器将分配给一个拆分。
但是当我把 Split size 大于实际 Block size 时会发生什么?
例如:如果我设置 Block size = 128 Mb 和 Split Size = 130 Mb ,在这种情况下将运行多少个映射器。是一个映射器还是多个映射器?
【问题讨论】:
标签: java hadoop mapreduce mapper reducers
据我所知,一个映射器将分配给一个拆分。
但是当我把 Split size 大于实际 Block size 时会发生什么?
例如:如果我设置 Block size = 128 Mb 和 Split Size = 130 Mb ,在这种情况下将运行多少个映射器。是一个映射器还是多个映射器?
【问题讨论】:
标签: java hadoop mapreduce mapper reducers
如果 InputSplit 超过 HDFS 块大小,则映射器最终会从多个块中读取数据。
在您的示例中,如果块大小 = 128 MB 并且计算的拆分大小 = 130MB,将生成一个 Map 任务,该任务将从两个不同的块中读取。
这两个块究竟是如何被读取的,由 HDFS 层抽象出来。
【讨论】:
可以将分割大小设置为大于块大小。但是在这种情况下,为了得到一个split mapper,需要从hdfs中读取几个block,这会导致网络传输,因为block n和block n+1可能不在一个datanode中。
在您的示例中,如果您设置 splitsize=130mb 并且您的输入数据是一个 130mb 文件,那么您将拥有 1 个映射器。
【讨论】: