您的位置:首页 > 运维架构

实验室要做一个hadoop上传文件性能测试,自己用实验室电脑做了个简单的测试

2014-05-11 17:30 417 查看
硬件环境:

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

NameNode:

CPU:

Intel(R) Pentium(R) Dual CPU E2160 @ 1.80GHz

size: 1800MHz

capacity: 1800MHz

width: 64 bits

clock: 200MHz

Memory:

size: 2GiB

width: 64 bits

Network:

description: Ethernet interface

product: RTL-8139/8139C/8139C+

endor: Realtek Semiconductor Co., Ltd.

size: 100Mbit/s

capacity: 100Mbit/s

width: 32 bits

clock: 33MHz



DISK:

description: ATA Disk

product: ST3160815AS

vendor: Seagate

size: 149GiB (160GB)



Slave1:

CPU:

  product:Intel(R)Core(TM)2DuoCPUE7300@2.66GHz

vendor:IntelCorp.

physicalid:1

  businfo:cpu@0

version:6.7.6

size:2650MHz

width:64bits Fedorarelease15(Lovelock)32bit

Memory:

description:SystemMemory

size:2GiB

width:64bits

clock:800MHz(1.2ns)

Network:

description:Ethernetinterface

product:88E8056PCI-EGigabitEthernetController

vendor:MarvellTechnologyGroupLtd.

size:100Mbit/s

capacity:1Gbit/s

width:64bits

clock:33MHz

DIsk:

description:ATADisk

product:HitachiHDP72501

size:149GiB(160GB)

capabilities:partitionedpartitioned:dos

Slave2:

CPU:

description: CPU

product: Intel(R) Core(TM)2 CPU 6300 @ 1.86GHz

vendor: Intel Corp.

slot: Socket 775

size: 1600MHz

capacity: 4GHz

width: 64 bits

clock: 266MHz

MEMORY:

description: System Memory

size: 2GiB

description: DIMM 800 MHz (1.2 ns)

size: 2GiB

width: 64 bits

clock: 800MHz (1.2ns)

Network:

description: Ethernet interface

product: RTL8111/8168B PCI Express Gigabit Ethernet controller

vendor: Realtek Semiconductor Co., Ltd.

size: 100Mbit/s

capacity: 1Gbit/s

width: 64 bits

clock: 33MHz

Disk:

description: ATA Disk

product: Hitachi HDS72103

vendor: Hitachi

size: 298GiB (320GB)

3台机器用5类线接到一台FAST FR516交换机上。

路由器型号:FAST FR516

网络标准:IEEE 802.3,IEEE 802.3u,IEEE 802.3x,IEEE 802.1X

网络协议:TCP/IP,DHCP,ICMP,NAT,PPPoE,SNTP

传输速率:10/100Mbps

端口结构:非模块化

广域网接口:1个

局域网接口:16个

接口介质:10Base-T:3类或3类以上UTP

100Base-TX:5类UTP

软件环境:

3台机器上都装着Fedorarelease15(Lovelock)32bit,hadoop 1.0.0(,集群设置副本数量Replication = 2。集群上启动了map-reduce,HDFS和SSH服务。没有运行任何其它job)

测试过程:

1. 首先将hdfs的上传速度和scp的速度做对比,在集群中找了一个节点Slave1,向hdfs put一个643MB的文件(hdfs文件块64MB,2个节点,每个节点大约会有5个文件块(共11个)):

[hadoop@Slave1 Downloads]$ time hadoop fs -put 2008.zip /usr/hadoop

real 1m6.896s

user 0m7.197s

sys 0m2.256s

用了66.896秒,平均速度为9.6M/s.

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

[hadoop@Slave1 Downloads]$ time hadoop fs -get /usr/hadoop/2008.zip 2008.zip

real 0m19.830s

user 0m5.269s

sys 0m2.311s

下载的速度很快,只用了19.830秒,约32.4MB/s的速度.

3. 从该节点向另外一个节点scp该文件:

[hadoop@Slave1 Downloads]$ scp 2008.zip hadoop@10.103.240.152

2008.zip 100% 643MB 11.1MB/s 00:58

real 1m1.427s

user 0m10.563s

sys 0m2.714s

用了61.427秒,平均速度为10.5M/s.



4. 再看一下Slave1在单点内文件传输效率,

[hadoop@Slave1 Downloads]$ time cp 2008.zip ~

real 0m19.358s

user 0m0.014s

sys 0m1.201s

用了19.358秒,平均速度为33.2MB/s

显然,和Slave1单点下载HDFS文件速度差不多,估计是由于HDFS块本地化的原因。查看2008.zip文件的block分布:

分析:由于副本数为2,且只有Slave1和Slave2两个数据节点,因此在每个节点上都有一份完整的2008.zip文件。这样在单点下载HDFS文件时,总时间相当于本地文件复制加上与HDFS系统交互的所用的时间。

5. 因此我们在NameNode上下载该文件:

[hadoop@Master Downloads]$ time hadoop fs -get /usr/hadoop/2008.zip 2008.zip

real 0m59.757s

user 0m14.479s

sys 0m8.009s

用了59.757秒,平均速度为10.7MB/s.



在NameNode上上传该文件:

[hadoop@Master ~]$ time hadoop fs -put Downloads/2008.zip /usr/hadoop/2008.zip

real 1m13.005s

user 0m10.672s

sys 0m3.932s

用了73.005s,平均速度为8.8MB/s.

6. 之前都是测试的单个文件传输速率,我们来看一下多个小文件的传输速率。

JarsLib文件夹是由31594个小文件组成,总共467M。

我们在Slave1上进行测试。首先向HDFS上传该文件:

[hadoop@Slave1 ~]$ time hadoop fs -put JarsLib/ /usr/hadoop/JarsLib

real 6m18.592s

user 0m26.000s

sys 0m11.101s

用了378.592秒,1.2MB/s.



然后我们从HDFS上下载该文件:

[hadoop@Slave1 ~]$ time hadoop fs -get /usr/hadoop/JarsLib ~

real 1m11.225s

user 0m16.483s

sys 0m6.683s

用了71.225秒,平均6.5MB/s.



从该节点向另外一个节点scp该文件:

[hadoop@Slave1 Downloads]$ time scp -r JarsLib hadoop@10.103.240.152

real 1m1.755s

user 0m8.115s

sys 0m3.579s

用时61.755s,平均速度7.6MB/s



单点内复制速度:

[hadoop@Slave1 ~]$ time cp -r JarsLib/ ~/Downloads/

real 0m15.001s

user 0m0.076s

sys 0m1.631s

用了15.001s,平均速度为31.3MB/s.



然后我们在NameNode上下载该文件:

[hadoop@Master ~]$ time hadoop fs -get /usr/hadoop/JarsLib ~

real 1m31.138s

user 0m32.430s

sys 0m15.251s

用时91.138s,平均速度5.1MB/s.



在NameNode上上传该文件。

[hadoop@Master ~]$ time hadoop fs -put JarsLib/ /usr/hadoop/JarsLib

real 7m4.508s

user 0m44.582s

sys 0m16.922s

用了424.450s,p平均速度为1.1MB/s.



小结:

编号

传输方向

643MB(1个文件)

467M(34594个文件)

传输时间

传输速率

传输时间

传输速率

1

Slave1-> HDFS

66.896s

9.6MB/s

378.592s

1.2MB/s

2

Slave1-> Slave2

61.427s

10.5MB/s

71.225s

6.5MB/s

3

HDFS->Slave1

19.830s

32.4MB/s

61.755s

7.6MB/s

4

Slave1-> Slave1

19.358s

33.2MB/s

15.001s

31.3MB/s

5

HDFS->NameNode

59.757s

10.7MB/s

91.138s

5.1MB/s

6

NameNode->HDFS

73.005s

8.8MB/s

424.450s

1.1MB/s

分析1和6,文件个数对文件传输效率的影响是十分巨大地,不管是在DataNodes内或DataNodes外,对于本实验的两个文件来说,文件上传效率相差8倍左右。

分析3和4,由于数据的本地化,Slave1上保存了文件的所有数据,因此对于少量大文件来说,传输速率和本地磁盘复制的速率相差不大。而随着大量小文件的增加,本地磁盘速率影响较小,而HDFS传输的速率搜到较大影响。本例中相差4倍多。

分析5和6,datanodes以外的节点上传文件为单点输出,而相对于从HDFS上下载数据的多对单传输比较,速度相差较大,5倍左右。

总的来说,单节点之间传输的最大速率为10MB/s,考虑到网卡为100M网卡(理论最大速率为12.5MB/s),交换机亦为100M接口,网线为5类线,猜测限制因素主要为PC和交换机网卡。

从表中可以分析出更多的数据,在这里就不一一列举。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: