hive mapreduce split 合并

大体思路:

1 先查找各个单节点,找出依次满足最大分割、最小节点分割,最后剩余数据,进入第二步

2 查看单个机架,  找出依次满足最大分割、最小机架分割,最后剩余数据,进入第三步

3 查找所有机架剩余数据,找出满足最大分割,最后剩余数据(小于最大分割),进入4步

4 将剩下的数据做为一个数据块。      

1).三个重要的属性:

  • maxSplitSize:切片大小最大值。可通过属性 "mapreduce.input.fileinputformat.split.maxsize" 或 CombineFileInputFormat.setMaxInputSplitSize()方法进行设置【不设置,则所有输入只启动一个map任务】
  • minSplitSizeNode:同一节点的数据块形成切片时,切片大小的最小值。可通过属性 "mapreduce.input.fileinputformat.split.minsize.per.node" 或 CombineFileInputFormat.setMinSplitSizeNode()方法进行设置
  • minSplitSizeRack:同一机架的数据块形成切片时,切片大小的最小值。可通过属性 "mapreduce.input.fileinputformat.split.minsize.per.rack" 或 CombineFileInputFormat.setMinSplitSizeRack()方法进行设置
  • 大小关系:maxSplitSize >= minSplitSizeNode >= minSplitSizeRack

2).切片的形成过程:

 2.1. 不断迭代节点列表,逐个节点 (以数据块为单位) 形成切片(Local Split)

  a. 如果maxSplitSize == 0,则整个节点上的Block数据形成一个切片

  b. 如果maxSplitSize != 0,遍历并累加每个节点上的数据块,如果累加数据块大小 >= maxSplitSize,则将这些数据块形成一个切片。继续该过程,直到剩余数据块累加大小 < maxSplitSize 。则进行下一步

  c. 如果剩余数据块累加大小 >= minSplitSizeNode,则将这些剩余数据块形成一个切片。继续该过程,直到剩余数据块累加大小 < minSplitSizeNode。然后进行下一步,并这些数据块留待后续处理

 2.2. 不断迭代机架列表,逐个机架 (以数据块为单位) 形成切片(Rack Split)

  a. 遍历并累加这个机架上所有节点的数据块 (这些数据块即上一步遗留下来的数据块),如果累加数据块大小 >= maxSplitSize,则将这些数据块形成一个切片。继续该过程,直到剩余数据块累加大小<maxSplitSize。则进行下一步

  b. 如果剩余数据块累加大小 >= minSplitSizeRack,则将这些剩余数据块形成一个切片。如果剩余数据块累加大小 < minSplitSizeRack,则这些数据块留待后续处理     

 2.3. 遍历并累加所有Rack上的剩余数据块,如果累加数据块大小 >= maxSplitSize,则将这些数据块形成一个切片。继续该过程,直到剩余数据块累加大小< maxSplitSize。则进行下一步

 2.4. 将最终剩余的数据块形成一个切片。

Demo:

规定:maxSplit=100 > minSizeNode=50 > minSizeRack=30

原有文件:Rack01:{[30,60,70] [80,110]}   Rack02:{170}  

处理过程:

30+60+70 > 100 ? 100+60  80+110 > 100 ? 100+90  170 > 100 ? 100+70  

  --->  3个数据切片,以及Rack01:{[60] [90]}  Rack02:{70}  

    --->  60 > 50 ? 50+10  90 > 50 ? 50+40  70 > 50 ? 50+20  

      --->  3+3个数据切片,以及Rack01:{[10] [40]}  Rack02:{20}  

        --->  10+40 < 100 ?0  20 < 100 ? 0  

          --->  3+3+0个数据切片,以及Rack01:{50}  Rack02:{20}  

            --->  50+20 > 30 ? 30+30+10  

              --->  3+3+0+3个数据切片

猜你喜欢

转载自blog.csdn.net/genghaihua/article/details/81946484