Uploaded image for project: 'Hadoop Common'
  1. Hadoop Common
  2. HADOOP-2560

Processing multiple input splits per mapper task

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Duplicate
    • None
    • None
    • None
    • None

    Description

      Currently, an input split contains a consecutive chunk of input file, which by default, corresponding to a DFS block.
      This may lead to a large number of mapper tasks if the input data is large. This leads to the following problems:

      1. Shuffling cost: since the framework has to move M * R map output segments to the nodes running reducers,
      larger M means larger shuffling cost.

      2. High JVM initialization overhead

      3. Disk fragmentation: larger number of map output files means lower read throughput for accessing them.

      Ideally, you want to keep the number of mappers to no more than 16 times the number of nodes in the cluster.
      To achive that, we can increase the input split size. However, if a split span over more than one dfs block,
      you lose the data locality scheduling benefits.

      One way to address this problem is to combine multiple input blocks with the same rack into one split.
      If in average we combine B blocks into one split, then we will reduce the number of mappers by a factor of B.
      Since all the blocks for one mapper share a rack, thus we can benefit from rack-aware scheduling.

      Thoughts?

      Attachments

        1. multipleSplitsPerMapper.patch
          12 kB
          Dhruba Borthakur

        Issue Links

          Activity

            People

              dhruba Dhruba Borthakur
              runping Runping Qi
              Votes:
              0 Vote for this issue
              Watchers:
              25 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: