一 如何控制Map任务数量

既然要讨论如何控制map任务数量,那么我们就得知道有哪些因素会影响map任务的数量。

我们知道,map任务的数量是由在提交job的时候,进行文件切片的时候,文件的切片数决定的。

在这个时候,无论你是否在配置文件设置mapreduce.job.maps参数,都将会重新设置这个值为文件的切片数。

而这个文件切片数又是由splitSize决定的。如果一个splitSize=20M,那么100M的文件就会生成5个切片。

那么splitSize又是由什么决定的呢?

intsplitSize = computeSplitSize():

具体逻辑就是:

maxSize:mapreduce.input.fileinputformat.split.maxsize,默认值是Integer.MAX_VALUE

minSize:mapreduce.input.fileinputformat.split.minsize,默认值是1

如果min(maxSize,blockSize)取其中最小的,假设结果为result

然后在max(minSize,result)取中较大者。

所以默认情况下,splitSize就是blockSize=128M

策略如下:

#如果希望调小maptask, 那么你需要调大minSize,至少保证minSize> blockSize(128M)

#如果希望调大maptask,那么你需要调小maxSize,至少保证maxSize< blockSize(128M)

#如果有很多小文件,你又想减少map任务,这时候我觉得你可以使用CombineInputFormat将多个文件组装成一个CombineInputSplit。

二 调整reduce数量

Reduce的数量是由mapreduce.job.reduces这个参数决定的,你也可以在job. setNumReduceTasks

如何在Hadoop中控制MapReduce任务的数量相关推荐

  1. 深度分析如何在Hadoop中控制Map的数量

    深度分析如何在Hadoop中控制Map的数量 guibin.beijing@gmail.com 很多文档中描述,Mapper的数量在默认情况下不可直接控制干预,因为Mapper的数量由输入的大小和个数 ...

  2. 如何在hadoop中控制map的个数

    hadooop提供了一个设置map个数的参数mapred.map.tasks,我们可以通过这个参数来控制map的个数.但是通过这种方式设置map的个数,并不是每次都有效的.原因是mapred.map. ...

  3. 如何在Hadoop上编写MapReduce程序

    1. 概述 1970年,IBM的研究员E.F.Codd博士在刊物<Communication of the ACM>上发表了一篇名为"A Relational Model of ...

  4. python hadoop streaming_如何在Hadoop中使用Streaming编写MapReduce(转帖)

    作者:马士华 发表于:2008-03-05 12:51 最后更新于:2008-03-25 11:18 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息. http://www ...

  5. Hadoop中关于MapReduce的编程实例(过滤系统日志)

    框架 Apache Hadoop:分布式处理架构,结合了 MapReduce(并行处理).YARN(作业调度)和HDFS(分布式文件系统);  一.下载Hadoop相关文件 1.在Hadoop官网上下 ...

  6. hadoop中使用MapReduce编程实例

    原文链接:http://www.cnblogs.com/xia520pi/archive/2012/06/04/2534533.html 从网上搜到的一篇hadoop的编程实例,对于初学者真是帮助太大 ...

  7. hadoop中map和reduce的数量设置问题

    转载http://my.oschina.net/Chanthon/blog/150500 map和reduce是hadoop的核心功能,hadoop正是通过多个map和reduce的并行运行来实现任务 ...

  8. 一脸懵逼学习Hadoop中的MapReduce程序中自定义分组的实现

    1:首先搞好实体类对象: write 是把每个对象序列化到输出流,readFields是把输入流字节反序列化,实现WritableComparable,Java值对象的比较:一般需要重写toStrin ...

  9. Hadoop中的MapReduce框架原理、数据清洗(ETL)、MapReduce开发总结、常见错误及解决方案

    文章目录 13.MapReduce框架原理 13.7 数据清洗(ETL) 13.7.1 需求 13.7.1.1 输入数据 13.7.1.2 期望输出数据 13.7.2 需求分析 13.7.3实现代码 ...

最新文章

  1. Maven(插件配置和生命周期的绑定)
  2. linux下的jsp
  3. 【AHOI2005】病毒检测
  4. 双系统安装 Windows8和Windows Server2012
  5. 服务器电源can协议,硬件接口协议之“CAN总线EMC设计”
  6. 隐藏界面没有必要应用场景
  7. Docker小白到实战之Docker Compose在手,一键足矣
  8. mfc之DDX_Control作用
  9. java给图片添加自定义文字信息
  10. 双人贪吃蛇小游戏C++原创
  11. Creative Cloud Cleaner Tool mac卸载adobe系列软件详细教程
  12. Direct3d基础一__CPP基础之碰到无法打开源文件D3DX11.h如何解决
  13. Android 指纹验证标准API学习
  14. 【搭建OpenCV+Tesseract】
  15. 深度学习CTR模型粗略记录
  16. C# 实现 简体<--->繁体 的互相转换
  17. JAVA的while循环语句和break与continue的使用
  18. 手写简易版web框架
  19. Fiddler 如何抓取手机app包以及抓取https 响应
  20. 18、VXLAN技术介绍与应用场景,附VXLAN手册下载

热门文章

  1. 上传图片的表单java代码_java模拟post方式提交表单实现图片上传(示例代码)
  2. c语言10个裁判,5个裁判可以对10个歌手进行打分,计算各个歌手的最终得分排列...
  3. Python机器学习:线型回归法06最好的衡量线型回归法的指标RSquared
  4. 双协议栈服务器,10. 搭建双协议栈Web服务器:使用IPv6地址、IPv4
  5. 8cm等于多少像素_没诚意!红米Note 8 4800万像素是假的?网友:看看realme Q吧
  6. Codeforce 记录 Rating
  7. java 本年第一天_JAVA获取本周 本月 本年 第一天和最后一天
  8. python 文件操作不被打断_python学习六文件操作和异常处理
  9. extjs 方法执行顺序_百战程序员:方法论
  10. base32php,ThinkPHP6.0使用extends Base方式处理后台登录逻辑