【问题标题】:What happen,when I set Split size is greater than the actual Block size in mapreduce framework?当我在 mapreduce 框架中设置拆分大小大于实际块大小时会发生什么?
【发布时间】:2017-08-28 18:58:29
【问题描述】:

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

但是当我把 Split size 大于实际 Block size 时会发生什么?

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

【问题讨论】:

    标签: java hadoop mapreduce mapper reducers


    【解决方案1】:

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

    这两个块究竟是如何被读取的,由 HDFS 层抽象出来。

    【讨论】:

      【解决方案2】:

      可以将分割大小设置为大于块大小。但是在这种情况下,为了得到一个split mapper,需要从hdfs中读取几个block,这会导致网络传输,因为block n和block n+1可能不在一个datanode中。

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

      【讨论】:

      • 所以在这种情况下,一个映射器只会读取前 128 mb 数据,然后再次读取剩余的 2 mb 数据。否则它会一次读取整个 130mb 数据?
      • “一次”是什么意思?
      • 我的意思是同时。
      猜你喜欢
      • 2016-01-26
      • 2020-11-13
      • 1970-01-01
      • 2022-01-21
      • 2013-04-11
      • 1970-01-01
      • 2010-12-08
      • 1970-01-01
      • 2015-08-13
      相关资源
      最近更新 更多