HDFS性能测试及优化部署

hadoop的存储系统hdfs在大数据领域有着无可比拟的地位,本篇文章对hdfs的存储性能做一个相对详细的测试,影响因素有哪些,来帮助我们优化部署应用程序和hadoop集群,最大化利用hadoop的吞吐能力。

1.1 HDFS存储机制

HDFS是Hadoop分布式计算中的数据存储系统。在HDFS中,文件的读写过程就是client和NameNode以及DataNode一起交互的过程。NameNode管理着文件系统的元数据,DataNode存储的是实际的数据,那么client就会联系NameNode以获取文件的元数据,而真正的文件读取操作是直接和DataNode进行交互的。所以存储过程大致如下:

Client要向集群中写入数据,首先询问NameNode,NameNode告知客户端向哪DataNode写入数据,在往DataNode写入数据的同时,DataNode与NameNode保持心跳,如果DataNode在执行任务失败,NameNode会通过心跳机制得知DataNode死掉,将重新分配新的任务到其他的DataNode,架构图如下图所示。

 

 HDFS的副本放置车策略遵循以下几点(最优副本数为3):

1) 第一副本:放置在上传文件DataNode,如果是集群外提交,由NameNode选择一台磁盘不太满,cpu不太忙的节点。

2) 第二副本:放置在于第一副本不同的机架的节点上。

3)第三副本:与第二个副本相同集群的节点。

4)其他副本则随机选取节点。

 

1.2 测试数据

测试环境:linux 3.10.0-229.el7.x86_64

网络带宽:实测35MB/S-40MB/S

机器内存:32GB

硬盘空间:1T

硬盘IO:实测300MB/S

HADOOP版本:2.6

JDK版本:1.8

以下所有测试客户端和集群节点都不在同一台机器上,单个测试文件大小为100M。

伪分布式测试结果:

集群节点数(个)

副本数(个)

客户端数量(个)

平均速度(MB/S)

吞吐量(MB/S)

1

1

1

31

31

1

1

2

18

36

1

1

3

13

39

1

3

1

31

31

1

3

2

18

36

初步分析结论:上传速度受客户端数量影响,不受副本数影响,并行客户端越多,单个写入速度越慢,集群吞吐量有小幅度提升,不超过网络带宽。

 

五节点集群(1个NameNode,4个DataNode):

集群节点数(个)

副本数(个)

客户端数量(个)

平均速度(MB/S)

吞吐量(MB/S)

5

1

1

31

31

5

1

2

30

60

5

1

3

30

90

5

1

4

30

120

5

1

5

22

110

5

3

1

31

31

5

3

2

17

34

5

3

3

12

36

5

3

4

10

40

初步分析结论:上传速度受副本数和客户端数量影响。在副本数为1的情况下,客户端数量越多,吞吐量越高,当客户端数量达到DataNode节点数量的时候吞吐量几乎不变;在副本数为3的时候,客户端数量越高,平均速度越低,但是集群吞吐量有小幅度提升,但不超过带宽。

 

1.3测试总结

在16节点的hadoop集群环境下,网络为万兆网,假设1个NameNode节点,15个DataNode,那么理论上集群的总吞吐量为15GB/S(即吞吐量可随节点数增加而线性增长),但是由于IO性能的限制,每台机器(按照固态硬盘)的最大吞吐量也就250MB/S左右,那么集群最大吞吐量为3.5GB/S左右(不跑任何hadoop以外的程序)。

在极限情况下,单个客户端最大IO速度为250MB/S,如果副本数为3的话,一秒内的总流量为750MB,万兆网是完全可以支撑的。如果多个客户端的话,由于受集群吞吐量的影响会有所下降,大致满足以下公式关系(客户端数量为N,数据节点数量为M,网络带宽为B,副本数位P):

1)如果P * N < M,那么每台客户机的速度都可以达到IO极限。

2)如果P * N > M,那么平均速度为R= M * B/(P * N * 8)

上面算出来的速度并不是绝对的,因为不同的客户端可能会同时路由block到同一个DataNode,不过在海量数据的情况下,大致可以达到负载均衡。


  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值