Hadoop1.0.4 HDFS I/O性能测试

分布式RDF查询引擎的项目需要在节点之间传输中间结果,考虑HDFS可以作为一个备选的传输媒介,于是对HDFS的IO性能做了一个粗略的测试,过程和结果如下:

硬件环境:

实验室的8台老机器组成的集群,配置:

Intel 965芯片组
Intel Core E4400 CPU(2GHz双核,2MB L2,800MHz FSB)
1GB*4 双通道 DDR2 667 内存
160GB*1 SATA2 硬盘
集成BCM5754 Gigabit PCI-E 网卡
8台机器用1米长的5类线接到一台48G背板带宽的24口千兆交换机上

软件环境:

8台机器上都装着
CentOS 6.2(2.6.32) x64 系统
Hadoop 1.0.4(集群上启动了map-reduce,还运行着zookeeper和hama0.6.0,但没有运行任何job)

测试过程:

由于只是想知道hdfs大概的io性能,以下的实验都没有多次实验取平均。

首先将hdfs的上传速度和scp的速度做对比,随便在集群中找了一个节点iir455-202,向hdfs  put一个1028MB的文件(hdfs文件块64MB,8个节点,每个节点大约会有2个文件块):

[iir@iir455-202 data]$ time ~/hadoop-1.0.4/bin/hadoop fs -put external_links_en.nt /bhq/

real 0m42.693s
user 0m12.163s
sys 0m3.138s

用了42.693秒,从该节点向另外一个节点scp该文件:

[iir@iir455-202 data]$ time scp external_links_en.nt iir@iir455-200:/data/

external_links_en.nt                          100% 1028MB  36.7MB/s  00:28   

real 0m29.178s
user 0m22.577s
sys 0m3.406s

用了29.178秒,可见hdfs put文件的速度约24MB/s,scp点对点拷贝的速度约35MB/s。

再看看下载的速度,将本地的文件删除,从hdfs上get一个:

[iir@iir455-202 data]$ time ~/hadoop-1.0.4/bin/hadoop fs -get /bhq/external_links_en.nt ./

real 0m16.727s
user 0m8.550s
sys 0m3.693s

下载的速度很快,只用了16.727秒,约61.5MB/s的速度,怀疑是本地有缓存导致速度很快,于是换个目录试试:

[iir@iir455-202 data]$ mkdir 123
[iir@iir455-202 data]$ time ~/hadoop-1.0.4/bin/hadoop fs -get /bhq/external_links_en.nt ./123/

real 0m21.534s
user 0m8.471s
sys 0m3.737s

21.534秒,速度依然挺快的,应该和本地的缓存没啥关系,50-60MB/s的这个速度估计也就接近了老SATA2硬盘、集成网卡和5类网线的极限了。

相关推荐