• MapReduce中的map个数


      在map阶段读取数据前,FileInputFormat会将输入文件分割成split。split的个数决定了map的个数。影响map个数(split个数)的主要因素有:

      1) 文件的大小。当块(dfs.block.size)为128m时,如果输入文件为128m,会被划分为1个split;当块为256m,会被划分为2个split。

      2) 文件的个数。FileInputFormat按照文件分割split,并且只会分割大文件,即那些大小超过HDFS块的大小的文件。如果HDFS中dfs.block.size设置为128m,而输入的目录中文件有100个,则划分后的split个数至少为100个。

      3) splitsize的大小。分片是按照splitszie的大小进行分割的,一个split的大小在没有设置的情况下,默认等于hdfs block的大小。但应用程序可以通过两个参数来对splitsize进行调节

        InputSplit=Math.max(minSize, Math.min(maxSize, blockSize)

        其中:

          minSize=mapred.min.split.size

          maxSize=mapred.max.split.size

        我们可以在MapReduce程序的驱动部分添加如下代码:

          TextInputFormat.setMinInputSplitSize(job,1024L); // 设置最小分片大小

          TextInputFormat.setMaxInputSplitSize(job,1024×1024×10L); // 设置最大分片大小

        总结如下:

          当mapreduce.input.fileinputformat.split.maxsize > mapreduce.input.fileinputformat.split.minsize > dfs.blockSize的情况下,此时的splitSize 将由mapreduce.input.fileinputformat.split.minsize参数决定

          当mapreduce.input.fileinputformat.split.maxsize > dfs.blockSize > mapreduce.input.fileinputformat.split.minsize的情况下,此时的splitSize 将由dfs.blockSize配置决定

          当dfs.blockSize > mapreduce.input.fileinputformat.split.maxsize > mapreduce.input.fileinputformat.split.minsize的情况下,此时的splitSize将由mapreduce.input.fileinputformat.split.maxsize参数决定。

    如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】。
    如果,您希望更容易地发现我的新博客,不妨点击一下左下角的【关注我】。
    如果,您对我的博客所讲述的内容有兴趣,请继续关注我的后续博客,我是【刘超★ljc】。

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    AKS (6) 新建Azure AKS Node Pool,并扩容Node磁盘容量
    Azure Platform Introduction (16) 不同订阅之间可用区的对应关系
    基于Spring Cache实现二级缓存(Caffeine+Redis)
    钉钉机器人实现异常预警通知功能
    Android GPS定位详解
    算法思想篇递归
    算法思想篇排序
    win10如何在桌面上显示或隐藏计算机、回收站图标
    如何解决“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序”问题
    IIS/项目访问出现“HTTP 错误 401.3 Unauthorized”问题,如何解决
  • 原文地址:https://www.cnblogs.com/codeOfLife/p/5676754.html
Copyright © 2020-2023  润新知