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 通过此索引来计算属于自己的切片数据

      


  • 相关阅读:
    js如何将字符串作为函数名调用函数
    js如何生成[n,m]的随机数
    UIMenuController,UIPasteboard:复制,粘贴详细解释
    python2.7和 python3.4但是不要
    Android IPC通信和AIDL技术应用
    可穿戴式智能设备,其潜在的安全问题?(上)
    CentOS安装KVM步骤虚拟机,绝对实用!
    Python于*args 和**kwargs使用
    uva 1556
    JSCover+WebDriver/Selenium获得JS 代码覆盖
  • 原文地址:https://www.cnblogs.com/share23/p/9779557.html
Copyright © 2011-2022 走看看