MapReduce中的map个数

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

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

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

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

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

    其中:get

      minSize=mapred.min.split.sizeinput

      maxSize=mapred.max.split.size博客

    咱们能够在MapReduce程序的驱动部分添加以下代码:it

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

      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】。

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

相关文章
相关标签/搜索