zoukankan      html  css  js  c++  java
  • MapReduce文件切分个数计算方法

    转自:http://www.crazyant.net/1423.html

    Hadoop首先会计算每个切分的大小,然后使用”文件总大小/每个切分的大小“来决定划分的总数,如果不足一个切分的大小,则当做1个;

    在org.apache.hadoop.mapred.FileInputFormat中给出了计算每个划分大小的方法:

      protected long computeSplitSize(long goalSize, long minSize,
                                           long blockSize) {
        return Math.max(minSize, Math.min(goalSize, blockSize));
      }

    其中几个变量的解释如下:

    • blockSize:HDFS存储的基本单元,默认为64MB或者128MB;
    • minSize:由用户设置的最小切分大小,配置项为mapred.min.split.size;
    • goalSize:计算公式为"文件总大小/用户设定的Map任务个数",即用户间接期望的大小;

    由此可以推断出选定策略:

    • 划分大小为blockSize:blockSize小于用户期望的大小,比用户设定的最小值要大;也就是说如果用户设定的最小值太小的话,会使用block size作为划分大小;
    • 划分大小为goalSize:用户设定了Map的任务数目,那么即使算出来的划分大小比block size小也会使用,这个时候出现了两个用户设定值:最小值和期望值,hadoop会选择两者中大的那个;
    • 划分大小为minSize:如果用户期望的值,还有blocksize只都比用户设定的最小值要小,那么就会使用这个最小值;

    针对这几个值,用户可以根据输入数据的情况,合理的设置mapred.min.split.size和map.tasks.size来实现优化,InputSplit和blockSize相同是非常好的一种方法,因为不需要拆分block了.

  • 相关阅读:
    MySQL基础语句【学习笔记】
    减一技术应用:生成排列与幂集
    Java实现动态规划法求解0/1背包问题
    LODOP中ADD_PRINT_TABLE、HTM、HTML表格自动分页测试
    LODOP设置判断后执行哪个
    Lodop删除语句Deleted只能内嵌设计维护可用
    Lodop、c-lodop注册与角色简短问答
    LODOP暂存、应用、复原 按钮的区别
    JS判断语句 注意多句时加大括号 回调函数LODOP兼顾写法
    LODOP、C-Lodop简短排查语句
  • 原文地址:https://www.cnblogs.com/guxiaobei/p/8459075.html
Copyright © 2011-2022 走看看