Hadoop HDFS中的数据块和Map任务的分片

HDFS的数据块

磁盘数据块是磁盘进行数据读/写的最小单位,一般是512字节,

而HDFS中也有数据块,默认为64MB。所以HDFS上的大文件被分为许多个chunk.而HDFS上的小文件(小于64MB)的文件不会占据整个块的空间。

HDFS数据块设置大的原因是减少寻址开销,数据备份也是以块为单位的。

用Hadoop fsck / -files -blocks 命令可以检查HDFS根目录(/)下所有文件,块的健康状况:

Hadoop HDFS中的数据块和Map任务的分片 -  明明 - 明明的博客

 

Map任务的分片:

为什么推荐Map任务的分片尺寸和HDFS基本块的大小一致为最佳呢?

因为有3个因素:

a.map任务数=输入文件总大小/分片尺寸,所以分片越大,map任务数越少,从而系统执行开销越小。

b.管理分片的开销:显然是分片越大,则分片数量越少,越容易管理。

从a,b因素来看,貌似是分片越大越好。

c.网络传输开销

但是,如果分片太大以至于一个分片要跨越多个HDFS块,则一个map任务必须要由多个块通过网络传输,所以分片大小的上限是HDFS块的大小。

综上所述,map任务时的分片大小设置为HDFS块的大小是最佳选择。

 

hadoop上的时间计算

hadoop上的计算时间 = hadoop框架自身耗时 + 数据单机处理时间 / 计算并发度。
其中,hadoop框架自身耗时大约在10s左右,如果参数设置的不好,可能会比较长,不过最多估计也就半分钟左右。

计算并发度取决于两个因素:
1. 数据占用的分块数取决于你的文件在hadoop上存放时设置的块大小,默认是64M,你看一下是不是这么大,分块数量=文件大小/块大小。
2. hadoop设置的最大并行任务数,你看一下jobtracker上运行时某个时刻running状态的task数量就是了,通常这个值是比较稳定的。

更多Hadoop相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2012-05/61195.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值