测试HDFS写性能

原文:sw-code
1)写测试的原理

2)测试内容:向HDFS集群写10个128MB的文件(3个机器每个4核,2 * 4 = 8 < 10 < 3 * 4 =12)

[hadoop@hadoop103 ~]$ 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

2022-06-17 15:53:28,086 INFO fs.TestDFSIO: ----- TestDFSIO ----- : write
2022-06-17 15:53:28,086 INFO fs.TestDFSIO:             Date & time: Fri Jun 17 15:53:28 CST 2022
2022-06-17 15:53:28,086 INFO fs.TestDFSIO:         Number of files: 10
2022-06-17 15:53:28,086 INFO fs.TestDFSIO:  Total MBytes processed: 1280
2022-06-17 15:53:28,086 INFO fs.TestDFSIO:       Throughput mb/sec: 1.66
2022-06-17 15:53:28,086 INFO fs.TestDFSIO:  Average IO rate mb/sec: 1.71
2022-06-17 15:53:28,086 INFO fs.TestDFSIO:   IO rate std deviation: 0.3
2022-06-17 15:53:28,086 INFO fs.TestDFSIO:      Test exec time sec: 153.5
2022-06-17 15:53:28,086 INFO fs.TestDFSIO:

注意nrFiles n为生成mapTask的数量,生产环境一般可通过hadoop103:8088查看CPU核数,设置为(CPU核数-1)

  • Number of files:生成mapTas数量,一般是集群中(CPU核数-1)。
  • Total MBytes processed:总文件大小
  • Throughput mb/sec:单个mapTask的吞吐量

​ 计算方式:处理的总文件大小/每一个mapTask写数据的时间累加和

​ 整个集群吞吐量:生成mapTask数量 * 单个mapTask的吞吐量

  • Average IO rate mb/sec:平均mapTask的吞吐量

​ 计算方式:每个mapTask处理文件大小/每一个mapTask写数据的时间全部相加除以task数量

  • IO rate std deviation:方差、放映各个mapTask处理的差值,越小越均衡

如果测试过程中,出现异常,尝试关闭虚拟内存检测

yarn-site.xml中设置虚拟内存检测为false,然后重启Yarn集群

<!-- 虚拟内存检查,默认为打开,修改为关闭-->
<property>
    <description>Whether virtual memory limits will be enforced for
        containers.</description>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
</property>

3)测试结果分析

由于副本1就在本地(hadoop4),所以该副本不参与测试(如果客户端不在集群节点,那就所有副本都参与计算)

一共参与测试的文件:10个文件 * 2个副本 = 20个

压测后的速度:1.66

实测速度:1.66M/s * 20个文件 ≈ 33.2M/s

三台服务器的带宽:3 * (100Mbps / 8bit) ≈ 37.5M/s

所有网络资源都已经用满。

如果实测速度远小于网络,并且实测速度不能满足工作需求,可以考虑采用固态硬盘或者增加磁盘个数。

测试HDFS读性能

1)测试内容:读取HDFS集群10个128M的文件

[hadoop@hadoop102 ~]$ 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

2022-06-17 16:33:04,291 INFO fs.TestDFSIO: ----- TestDFSIO ----- : read
2022-06-17 16:33:04,292 INFO fs.TestDFSIO:             Date & time: Fri Jun 17 16:33:04 CST 2022
2022-06-17 16:33:04,292 INFO fs.TestDFSIO:         Number of files: 10
2022-06-17 16:33:04,292 INFO fs.TestDFSIO:  Total MBytes processed: 1280
2022-06-17 16:33:04,292 INFO fs.TestDFSIO:       Throughput mb/sec: 49.1
2022-06-17 16:33:04,292 INFO fs.TestDFSIO:  Average IO rate mb/sec: 98.43
2022-06-17 16:33:04,292 INFO fs.TestDFSIO:   IO rate std deviation: 78.64
2022-06-17 16:33:04,292 INFO fs.TestDFSIO:      Test exec time sec: 44.96

下篇文章:大数据之Hadoop集群中Yarn常用命令
相关文章:
大数据之Hadoop集群中Yarn常用命令
大数据之Hadoop集群中MapReduce的Join操作