Hadoop中map数的计算
来源:互联网 发布:打印机网络共享软件 编辑:程序博客网 时间:2024/06/06 06:38
Hadoop中在计算一个JOB需要的map数之前首先要计算分片的大小。计算分片大小的公式是:
goalSize = totalSize / mapred.map.tasks
minSize = max {mapred.min.split.size, minSplitSize}
splitSize = max (minSize, min(goalSize, dfs.block.size))
totalSize是一个JOB的所有map总的输入大小,即Map input bytes。参数mapred.map.tasks的默认值是2,我们可以更改这个参数的值。计算好了goalSize之后还要确定上限和下限。
下限是max {mapred.min.split.size, minSplitSize} 。参数mapred.min.split.size的默认值为1个字节,minSplitSize随着File Format的不同而不同。
上限是dfs.block.size,它的默认值是64兆。
举几个例子,例如Map input bytes是100兆,mapred.map.tasks默认值为2,那么分片大小就是50兆;如果我们把mapred.map.tasks改成1,那分片大小就变成了64兆。
计算好了分片大小之后接下来计算map数。Map数的计算是以文件为单位的,针对每一个文件做一个循环:
1.
2.
举几个例子:
1.
2.
3.
4.
5.
再看2个更特殊的例子:
1.
2.
那么splitSize = 60M ,map数实际为2,第一个文件分为1个map,处理的分片大小为40M;第二个文件分为1个map,大小为20M
通过这2个特殊的例子可以看到mapred.map.tasks并不是设置的越大,JOB执行的效率就越高。同时,Hadoop在处理小文件时效率也会变差。
根据分片与map数的计算方法可以得出结论,一个map处理的分片最大不超过dfs.block.size * 1.1 ,默认情况下是70.4兆。但是有2个特例:
1.
2.
- Hadoop中map数的计算
- Hadoop中map数的计算
- Hadoop中map数的计算
- Hadoop中map数的计算
- Hadoop中map数的计算
- Hadoop中map数的计算
- Hadoop中map数的计算
- Hadoop中map数的计算
- Hadoop如何计算map数和reduce数
- Hadoop如何计算map数和reduce数
- Hadoop如何计算map数和reduce数
- Hadoop如何计算map数和reduce数(hive,hbase)
- Hadoop如何计算map数和reduce数
- Hadoop如何计算map数和reduce数
- Hadoop如何计算map数和reduce数
- Hadoop如何计算map数和reduce数 .
- MapReduce 中 map 分片大小确定 和map任务数的计算
- hadoop mapreduce任务中,map任务数的确定
- 关于int main(int argc,char *argv[])
- Hive中的一种假NULL
- Hive中对科学计数法表示的字符串的转换
- jdbc的事务管理
- java读取字符串中数字
- Hadoop中map数的计算
- image文件图片显示,存储,读取问题
- HDFS bytes read与Map input bytes
- hdu 4740 (一步一步模拟就好了)考查耐心与细心
- Random的假随机
- 如何修改apusic应用服务器的启动内存
- 两种方式情况页面文本框
- 将apusic添加到windows服务
- GSON使用的学习笔记,入门篇