博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
map任务数配置
阅读量:6626 次
发布时间:2019-06-25

本文共 956 字,大约阅读时间需要 3 分钟。

hot3.png

    hadooop提供了一个设置map个数的参数mapred.map.tasks,我们可以通过这个参数来控制map的个数。但是通过这种方式设置map的个数,并不是每次都有效的。原因是mapred.map.tasks只是一个hadoop的参考数值,最终map的个数,还取决于其他的因素。

(1)默认map个数

     如果不进行任何设置,默认的map个数是和blcok_size相关的。

     default_num = total_size / block_size;

(2)期望map个数

     通过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。

转载于:https://my.oschina.net/puwenchao/blog/1595833

你可能感兴趣的文章
if语句总结及编写脚本
查看>>
肤浅感受一下为什么曾经的宁波公司不做外包项目的原因
查看>>
MV双网卡网络不通问题
查看>>
网站证书ssl
查看>>
centos(6和7)安装zabbix3.0客户端
查看>>
solidity 0.5.7快速教程
查看>>
使用B2G模拟器
查看>>
并行化-你的高并发大杀器
查看>>
拓思TSPlus 和 思杰Citrix 比较
查看>>
关于XML字符串和XML Document之间的转换《转》
查看>>
diskgenius 还没fdisk好用
查看>>
变频电源的输出滤波器的特点
查看>>
VirtualBox 命令行下添加U盘到虚拟机
查看>>
FinePrint双面打印设置
查看>>
苹果如何将图片转换为文字手机
查看>>
python学习笔记14:多线程
查看>>
有关Spring3.x 整合myBatis3.1的轻量级框架简要说明
查看>>
一个队asp.net session进行了再次封装的C#类的代码
查看>>
基础面试题分享
查看>>
Java I/O流详解
查看>>