Hadoop map任务个数分析
2015-07-16 19:38
302 查看
Hadoop map任务个数由输入文件在HDFS上的分块个数确定。
如果一个输入文件的大小大于BlockSize,那么这个输入文件被分成的若干个块,一个块即是一个split,map任务的个数等于块(split)的个数。
如果一个输入文件的大小小于BlockSize,则这个文件就是一个块(其占用的存储空间等于文件的实际大小),这个输入文件将被作为一个map任务的输入。
对于要处理大量小文件的MapReduce程序,由于一个小文件就需要启动一个Map task,太多的Map task会造成程序运行效率的低下,可以采用CombineFileInputFormat将多个input path合并成一个InputSplit送给mapper处理,从而减少Map任务的个数。
map个数的计算公式如下:
splitsize=max(minimumsize,min(maximumsize,blocksize))。
(如果没有设置minimumsize和maximumsize,splitsize的大小默认等于blocksize)
for(file :输入目录中的每个文件)
{
file_split = 1;
if(file.size>splitsize)
{
file_split=file_size/splitsize;
}
total_split+=file_split;
}
如果一个输入文件的大小大于BlockSize,那么这个输入文件被分成的若干个块,一个块即是一个split,map任务的个数等于块(split)的个数。
如果一个输入文件的大小小于BlockSize,则这个文件就是一个块(其占用的存储空间等于文件的实际大小),这个输入文件将被作为一个map任务的输入。
对于要处理大量小文件的MapReduce程序,由于一个小文件就需要启动一个Map task,太多的Map task会造成程序运行效率的低下,可以采用CombineFileInputFormat将多个input path合并成一个InputSplit送给mapper处理,从而减少Map任务的个数。
map个数的计算公式如下:
splitsize=max(minimumsize,min(maximumsize,blocksize))。
(如果没有设置minimumsize和maximumsize,splitsize的大小默认等于blocksize)
for(file :输入目录中的每个文件)
{
file_split = 1;
if(file.size>splitsize)
{
file_split=file_size/splitsize;
}
total_split+=file_split;
}
相关文章推荐
- linux常用指令(新手总结)
- Linux中的经典双链表的实现
- Centos6.4安装opennebula
- 配置 Docker 镜像下载的本地 mirror 服务
- Linux下编译并使用ZeroMQ
- Linux下的输入/输出重定向
- 【发布公告】您的应用卡么?Bugly全新功能:卡顿/ANR监控
- linux grep命令详解
- OpenCV使用标定图
- Hadoop获取split文件名
- Linux创建特殊设备文件
- linux 清除 命令
- SNMP监控一些常用OID的总结
- linux epoll 学习
- scrapy安装(Linux RedHat)
- OpenStack创建实例错误解决方法
- linux下Ctrl命令组合
- Linux的C函数open()、read()和write()使用说明
- 仿QQ群管理PopWindow
- linux下使用yum安装Apache+php+Mysql+phpMyAdmin