Hadoop调优手册(2)——集群压测

集群搭建好后,我们一般都会关心:我们的数据多久能上传到集群?以及多久能从HDFS上拉取到我们需要的数据?为了了解HDFS的读写性能,我们需要对集群进行压测。
HDFS的读写性能主要受到网速磁盘读写速度的影响。所以我们主要也是通过这两方面进行测试。


0.测试环境

搭建一个拥有3台服务器(3个DataNode)的集群,副本数量设置为3。
为了方便测试,将网速限制在100Mbps。

100Mbps单位是 bit,10M/s单位是 byte,1byte = 8bit,100Mbps/8 = 12.5M/s


1.测试HDFS写性能

在限制网速的情况下测试HDFS的写性能。

Q:为什么要限制网速测试HDFS的写性能?
A:在限制网速的情况下,若HDFS的写速度接近网速的“全速”,则说明此时限制HDFS写性能的就是我们限制的网速,而不是磁盘的读写速度;若HDFS的写速度远远小于网速的“全速”,则说明此时限制HDFS写性能的是磁盘的读写速度。

测试内容: 向HDFS集群写10个128M的文件。使用Hadoop自带的测试用例 TestDFSIO -write。

hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.1.3-tests.jar TestDFSIO -write -nrFiles 10 -fileSize 128MB

测试结果:

2021-08-08 10:43:16,854 INFO fs.TestDFSIO: Number of files: 10
2021-08-08 10:43:16,854 INFO fs.TestDFSIO: Total MBytes processed: 1280
2021-08-08 10:43:16,854 INFO fs.TestDFSIO: Throughput mb/sec: 1.61
2021-08-08 10:43:16,854 INFO fs.TestDFSIO: Average IO rate mb/sec: 1.9
2021-08-08 10:43:16,854 INFO fs.TestDFSIO: IO rate std deviation: 0.76
2021-08-08 10:43:16,854 INFO fs.TestDFSIO: Test exec time sec: 133.05

测试说明:

  • Number of files —— 文件数量,
    一般数量为 CPU数量-1 ,这样是为了使所有服务器都参与工作。
  • Total MBytes processed —— 处理的数据的总量。
  • Throughput mb/sec —— 吞吐量,
    计算方式为:处理数据总量 / 总处理时间。
  • Average IO rate mb/sec —— 平均IO速率,
    计算方式为:Σ(mapTask处理数据量 / mapTask处理时间) / mapTask数量。
  • IO rate std deviation —— IO速率方差,值越小,则说明集群中mapTask的处理能力越均衡。
  • Test exec time sec —— 测试执行时间。

测试结果分析: (简易测试,结论仅供参考)

  • 由于集群只有3个节点,并且设置副本数量为3,所以一共参与测试的文件:10个文件 * 2个副本 = 20个
  • 实测速度:1.61m/s * 20个文件 = 32.2m/s
  • 三台服务器的带宽:12.5 + 12.5 + 12.5 = 37.5m/s (实际网速受到各种因素的影响会比理论低一些)

可见,实测速度接近网速的“全速”,网络资源已经用满。若实测速度远远小于网速的“全速”,并且实测速度不能满足工作需求,可以考虑采用固态硬盘或者增加磁盘个数。


2.测试HDFS读性能

测试内容: 读取HDFS集群中10个128M的文件。使用Hadoop自带的测试用例 TestDFSIO -read。

hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.1.3-tests.jar TestDFSIO -read -nrFiles 10 -fileSize 128MB

测试结果:

2021-08-08 11:34:15,847 INFO fs.TestDFSIO: Number of files: 10
2021-08-08 11:34:15,847 INFO fs.TestDFSIO: Total MBytes processed: 1280
2021-08-08 11:34:15,848 INFO fs.TestDFSIO: Throughput mb/sec: 200.28
2021-08-08 11:34:15,848 INFO fs.TestDFSIO: Average IO rate mb/sec: 266.74
2021-08-08 11:34:15,848 INFO fs.TestDFSIO: IO rate std deviation: 143.12
2021-08-08 11:34:15,848 INFO fs.TestDFSIO: Test exec time sec: 20.83

测试结果分析: (简易测试,结论仅供参考)

读取文件速度远大于网速。这是因为集群只有3台服务器,且有3个副本,数据读取遵循就近原则,相当于都是读取的本地副本数据,没有走网络,所以实测速度应该接近磁盘读写速度。若实测速度远低于服务器的磁盘读写速度,且方差较大,说明集群中的少数磁盘可能出问题了;若实测速度远低于服务器的磁盘读写速度,且方差较小,说明集群中的多数磁盘可能都出问题了。

磁盘读写速度:

  • 机械硬盘:一般在100m/s左右
  • 固态硬盘:一般在200m/s – 500m/s,甚至更高。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值