如何在Hadoop中控制MapReduce任务的数量
一 如何控制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任务的数量相关推荐
- 深度分析如何在Hadoop中控制Map的数量
深度分析如何在Hadoop中控制Map的数量 guibin.beijing@gmail.com 很多文档中描述,Mapper的数量在默认情况下不可直接控制干预,因为Mapper的数量由输入的大小和个数 ...
- 如何在hadoop中控制map的个数
hadooop提供了一个设置map个数的参数mapred.map.tasks,我们可以通过这个参数来控制map的个数.但是通过这种方式设置map的个数,并不是每次都有效的.原因是mapred.map. ...
- 如何在Hadoop上编写MapReduce程序
1. 概述 1970年,IBM的研究员E.F.Codd博士在刊物<Communication of the ACM>上发表了一篇名为"A Relational Model of ...
- python hadoop streaming_如何在Hadoop中使用Streaming编写MapReduce(转帖)
作者:马士华 发表于:2008-03-05 12:51 最后更新于:2008-03-25 11:18 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息. http://www ...
- Hadoop中关于MapReduce的编程实例(过滤系统日志)
框架 Apache Hadoop:分布式处理架构,结合了 MapReduce(并行处理).YARN(作业调度)和HDFS(分布式文件系统); 一.下载Hadoop相关文件 1.在Hadoop官网上下 ...
- hadoop中使用MapReduce编程实例
原文链接:http://www.cnblogs.com/xia520pi/archive/2012/06/04/2534533.html 从网上搜到的一篇hadoop的编程实例,对于初学者真是帮助太大 ...
- hadoop中map和reduce的数量设置问题
转载http://my.oschina.net/Chanthon/blog/150500 map和reduce是hadoop的核心功能,hadoop正是通过多个map和reduce的并行运行来实现任务 ...
- 一脸懵逼学习Hadoop中的MapReduce程序中自定义分组的实现
1:首先搞好实体类对象: write 是把每个对象序列化到输出流,readFields是把输入流字节反序列化,实现WritableComparable,Java值对象的比较:一般需要重写toStrin ...
- 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实现代码 ...
最新文章
- Maven(插件配置和生命周期的绑定)
- linux下的jsp
- 【AHOI2005】病毒检测
- 双系统安装 Windows8和Windows Server2012
- 服务器电源can协议,硬件接口协议之“CAN总线EMC设计”
- 隐藏界面没有必要应用场景
- Docker小白到实战之Docker Compose在手,一键足矣
- mfc之DDX_Control作用
- java给图片添加自定义文字信息
- 双人贪吃蛇小游戏C++原创
- Creative Cloud Cleaner Tool mac卸载adobe系列软件详细教程
- Direct3d基础一__CPP基础之碰到无法打开源文件D3DX11.h如何解决
- Android 指纹验证标准API学习
- 【搭建OpenCV+Tesseract】
- 深度学习CTR模型粗略记录
- C# 实现 简体<--->繁体 的互相转换
- JAVA的while循环语句和break与continue的使用
- 手写简易版web框架
- Fiddler 如何抓取手机app包以及抓取https 响应
- 18、VXLAN技术介绍与应用场景,附VXLAN手册下载
热门文章
- 上传图片的表单java代码_java模拟post方式提交表单实现图片上传(示例代码)
- c语言10个裁判,5个裁判可以对10个歌手进行打分,计算各个歌手的最终得分排列...
- Python机器学习:线型回归法06最好的衡量线型回归法的指标RSquared
- 双协议栈服务器,10. 搭建双协议栈Web服务器:使用IPv6地址、IPv4
- 8cm等于多少像素_没诚意!红米Note 8 4800万像素是假的?网友:看看realme Q吧
- Codeforce 记录 Rating
- java 本年第一天_JAVA获取本周 本月 本年 第一天和最后一天
- python 文件操作不被打断_python学习六文件操作和异常处理
- extjs 方法执行顺序_百战程序员:方法论
- base32php,ThinkPHP6.0使用extends Base方式处理后台登录逻辑