zoukankan      html  css  js  c++  java
  • [MapReduce_4] MapTask 并发数的决定机制


    0. 说明

      介绍 && Map 个数 & Reduce 个数指定 && Map 切片计算


    1. 介绍

      一个 job 的 Map 阶段并行度由客户端在提交 job 时决定

      客户端对 Map 阶段并行度的规划基本逻辑为:

      1. 将待处理的文件进行逻辑切片(根据切片大小,逻辑上划分多个 split ),然后每一个 split 分配一个 MapTask 并行处理实例

      2. 具体切片规划是由 FileInputFormat 实现类的 getSplits()方法 完成


    2. Map 个数 & Reduce 个数指定

      Map个数指定:

    1. 根据文件个数指定
    2. 根据压缩文件可切割性

      Reduce个数指定:

    job.setNumReduceTasks(3);

     3. Map 切片计算

      【3.1 通过文件类型判断是否可切片】

      判断文件类型(是否可切割),通过文件名后缀的反转来进行编解码器的判断

    1. 无压缩编解码器 // 可切割
    2. 可切割的压缩编解码器 // 可切割
    3. 不可切割的压缩编解码器 // 不可切割,切片大小即文件大小 

      SequenceFile
      可切割,无论用什么压缩方式,或压缩编解码器

      【3.2 切片计算】

      最大切片值(MaxValue):  Long.MAX_VALUE

      最小切片值(MinValue):  1

      块大小(BlockSize ):     32M(本地模式) 128M(分布式)


      切片计算

    Math.max(MinValue , Math.min(MaxValue,BlockSize));

      通过设置最大切片值和最小切片值确定切片大小

    // 设置最大切片大小
    FileInputFormat.setMaxInputSplitSize(job,100);
    
    // 设置最小切片大小
    FileInputFormat.setMinInputSplitSize(job,100);    

      【3.3 总结逻辑切割】

      1、先进行数据切片,切片结果保留在 temp 下,job.split,里面存有切片数据偏移量索引

      2、每个 Map 通过此索引来计算属于自己的切片数据

      


  • 相关阅读:
    覆盖式发布与非覆盖式发布
    GIT
    Web Service返回符合Xml Schema规范的Xml文档
    下拉渐显菜单
    计算网页上坐标的距离
    初识交互设计
    良好用户体验-实现过程!
    做 用户调研?
    这个没什么技术含量,实现起来很简单?
    SQL SERVER 登录问题!该用户与可信的Sql Server连接无关联
  • 原文地址:https://www.cnblogs.com/share23/p/9779557.html
Copyright © 2011-2022 走看看