压测实操--TestDFSIO压测hdfs读写方案
TestDFSIO主要是对hdfs的I/O性能进行测试,通过使用MapReduce作业来完成测试,作为并行读写文件进行I/O性能测试。每个map任务用于读或写每个文件,map的输出用于收集与处理文件相关的统计信息,reduce用于累积统计信息,并产生summary。
命令参数
Usage: TestDFSIO [genericOptions] -read [-random | -backward | -skip [-skipSize Size]] | -write | -append | -truncate | -clean [-compression codecClassName] [-nrFiles N] [-size Size[B|KB|MB|GB|TB]] [-resFile resultFileName] [-bufferSize Bytes] [-storagePolicy storagePolicyName] [-erasureCodePolicy erasureCodePolicyName]
注意:如果集群开放了安全认证,需要提前认证通过后,进行压测。
一、先使用默认值进行压测
目前压测集群的namenode为1G
1、测试并行文件个数为20,size为1GB
读写操作
hadoop jar /usr/hdp/3.1.5.0-152/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-3.1.1.3.1.5.0-152-tests.jar TestDFSIO -write -nrFiles 20 -size 1GB hadoop jar /usr/hdp/3.1.5.0-152/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-3.1.1.3.1.5.0-152-tests.jar TestDFSIO -read -nrFiles 20 -size 1GB
2、测试并行文件个数为20,size为2GB
读写操作
hadoop jar /usr/hdp/3.1.5.0-152/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-3.1.1.3.1.5.0-152-tests.jar TestDFSIO -write -nrFiles 20 -size 2GB hadoop jar /usr/hdp/3.1.5.0-152/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-3.1.1.3.1.5.0-152-tests.jar TestDFSIO -read -nrFiles 20 -size 2GB
对应仪表盘根据上文进行查看,本集群在测试并行文件个数为20,size为2GB时,由于是3副本机制,基本已达到该集群的磁盘瓶颈。
3、测试并行文件个数为40,size为1GB
读写操作
hadoop jar /usr/hdp/3.1.5.0-152/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-3.1.1.3.1.5.0-152-tests.jar TestDFSIO -write -nrFiles 40 -size 1GB hadoop jar /usr/hdp/3.1.5.0-152/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-3.1.1.3.1.5.0-152-tests.jar TestDFSIO -read -nrFiles 40 -size 1GB
4、测试并行文件个数为80,size为512MB
读写操作
hadoop jar /usr/hdp/3.1.5.0-152/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-3.1.1.3.1.5.0-152-tests.jar TestDFSIO -write -nrFiles 80 -size 512MB hadoop jar /usr/hdp/3.1.5.0-152/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-3.1.1.3.1.5.0-152-tests.jar TestDFSIO -read -nrFiles 80 -size 512MB
5、测试并行文件个数为160,size为256MB
读写操作
hadoop jar /usr/hdp/3.1.5.0-152/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-3.1.1.3.1.5.0-152-tests.jar TestDFSIO -write -nrFiles 160 -size 256MB hadoop jar /usr/hdp/3.1.5.0-152/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-3.1.1.3.1.5.0-152-tests.jar TestDFSIO -read -nrFiles 160 -size 256MB
二、增大namenode内存进行压测
例如增大namenode内存为2G,依次测试不同并行文件个数,不同size的场景,在磁盘、内存或者cpu负载达到瓶颈时,结束压测。
三、总结
在集群硬件资源能给到最大条件下(比如namenode最大能给到8G,再大就会影响其他组件的内存使用),结合并行文件和文件大小对hdfs的i/o进行测试,需要重点关注io速率、rpc、namenode同步和集群是否告警情况。也可以将执行命令得到的io rate和throughput进行整理,形成曲线图查看趋势。