hadooop提供了一个设置map个数的参数mapred.map.tasks,我们可以通过这个参数来控制map的个数。但是通过这种方式设置map的个数,并不是每次都有效的。原因是mapred.map.tasks只是一个hadoop的参考数值,最终map的个数,还取决于其他的因素。
     为了方便介绍,先来看几个名词:
block_size : hdfs的文件块大小,默认为64M,可以通过参数dfs.block.size设置
total_size : 输入文件整体的大小
input_file_num : 输入文件的个数
(1)默认map个数
     如果不进行任何设置,默认的map个数是和blcok_size相关的。
     default_num = total_size / block_size;
(2)期望大小
     可以通过参数mapred.map.tasks来设置程序员期望的map个数,但是这个个数只有在大于default_num的时候,才会生效。
     goal_num = mapred.map.tasks;
(3)设置处理的文件大小
     可以通过mapred.min.split.size 设置每个task处理的文件大小,但是这个大小只有在大于block_size的时候才会生效。
     split_size = max(mapred.min.split.size, block_size);
     split_num = total_size / split_size;
(4)计算的map个数
compute_map_num = min(split_num,  max(default_num, goal_num))
     除了这些配置以外,mapreduce还要遵循一些原则。 mapreduce的每一个map处理的数据是不能跨越文件的,也就是说min_map_num >= input_file_num。 所以,最终的map个数应该为:
     final_map_num = max(compute_map_num, input_file_num)
     经过以上的分析,在设置map个数的时候,可以简单的总结为以下几点:
(1)如果想增加map个数,则设置mapred.map.tasks 为一个较大的值。
(2)如果想减小map个数,则设置mapred.min.split.size 为一个较大的值。
(3)如果输入中有很多小文件,依然想减少map个数,则需要将小文件merger为大文件,然后使用准则2。

如何在hadoop中控制map的个数相关推荐

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

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

  2. 如何在Hadoop中控制MapReduce任务的数量

    一 如何控制Map任务数量 既然要讨论如何控制map任务数量,那么我们就得知道有哪些因素会影响map任务的数量. 我们知道,map任务的数量是由在提交job的时候,进行文件切片的时候,文件的切片数决定 ...

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

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

  4. 如何在php中插入map热点,PHP中使用BigMap实例

    //所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素.由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省. /* 若 N =1 ; 申请内存空 ...

  5. java如何获得键值_如何在java中取map中的键值 的两种方法

    第一种方法根据键值的名字取值 import java.util.HashMap; import java.util.Map; public class Test { /** * @param args ...

  6. 实例讲解hadoop中的map/reduce查询(python语言实现)

    条件,假设你已经装好了hadoop集群,配好了hdfs并可以正常运行. $hadoop dfs -ls /data/dw/explorer Found 1 items drwxrwxrwx     - ...

  7. html左侧td字体居右,如何在td中控制字体右对齐 且加粗_html/css_WEB-ITnose

    800 居右对齐已经实现了,怎么实现字体加粗呢 ?? 谢谢 回复讨论(解决方案) 像这样的问题,楼主最好是先在网上找找答案!这才是好的学习方法 font-weight允许值 normal | bold ...

  8. 如何在php中插入map热点,php中关于Map热点的运用

    给图像使用map标签,可以给图像的某个部分建立超连接 一般情况下用在图片上,如: border="0" usemap="#Map" > href=&quo ...

  9. JAVA中如何取map的值_如何在java中取map中的键值 的两种方法

    第一种方法根据键值的名字取值 import java.util.HashMap; import java.util.Map; public class Test { /** * @param args ...

最新文章

  1. Centos6.9安装Oracle11G(静默方式)
  2. java class扫描接口_JAVA 扫描指定路径下所有的jar包,并保存所有实现固定接口的类型...
  3. TalkingData:用好大数据,为企业转型赋能
  4. leetCode 50.Pow(x, n) (x的n次方) 解题思路和方法
  5. Java反射_JDBC操作数据
  6. Linux运行级别介绍和root忘记密码找回方法
  7. USBCAN接口卡打开失败收不到数据常见问题分析
  8. UE4 虚幻引擎,蓝图Movement组件
  9. win10台式机,耳机插入没有声音
  10. 想裁剪视频时长,用电脑怎么裁剪视频时长
  11. 将WordPress后台的open-sans字体加载源从Google Fonts换为360 CDN
  12. 重磅 | 消灭所有马赛克,谷歌宣布机器学习图像锐化工具RAISR
  13. OracleConnection.ConnectionString
  14. 现代企业管理笔记——控制
  15. Mybatis原理——执行原理详解
  16. 微信小程序项目实例——食堂吃哪个
  17. 宅公司 宅家里 养生锻炼必备的少林八段锦
  18. c语言程序设计实用教程 清华大学出版社,清华大学出版社-图书详情-《C程序设计教程》...
  19. 软件工程小组课程设计项目
  20. Python中的函数与变量

热门文章

  1. 【测试点分析】1081 检查密码 (15分)
  2. 22行代码AC_Prime Number Aizu - 0009(素数筛)(解题报告)
  3. 用户线程和内核线程之间的区别
  4. word2026第十套计算机二级,计算机二级第十套练习真题
  5. ngixn+tomcat负载均衡 动静分离配置 (nginx反向代理)
  6. Eclipse基础设置
  7. 华为交换机的配置及:access、trunk、hybird端口详解
  8. BGP小实验——选路不困难,只要有方法
  9. 工程之星android版使用,安卓版工程之星软件网络1+1模式及网络cors连接操作详解...
  10. 改变能改变的,接受不能改变的