一、测试前准备
core-site.xml、hdfs-site.xml、yarn-site.xml)。其中,core-site.xml需配置NameNode地址(fs.defaultFS),hdfs-site.xml需设置副本因子(dfs.replication,测试时可设为1以减少资源占用)。start-dfs.sh启动HDFS服务,start-yarn.sh启动YARN服务;通过jps命令检查NameNode、DataNode、ResourceManager等进程是否正常运行。hadoop jar /path/to/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-x.x.x-tests.jar TestDFSIO -clean。二、常用性能测试工具及步骤
TestDFSIO是Hadoop自带的MapReduce-based工具,用于测试HDFS的读写吞吐量,操作简单,适合快速评估集群基础性能。
hadoop jar /path/to/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-x.x.x-tests.jar TestDFSIO -write -nrFiles 10 -size 1GB -resFile /path/to/write_result.log。其中,-nrFiles指定生成的文件数量(如10个),-size指定每个文件的大小(如1GB),-resFile指定结果日志路径。hadoop jar /path/to/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-x.x.x-tests.jar TestDFSIO -read -nrFiles 10 -size 1GB -resFile /path/to/read_result.log。Total MBytes processed(处理的总数据量,如10GB)、Throughput mb/sec(总吞吐量,如200MB/s)、Average IO rate mb/sec(平均IO速率,如210MB/s)、IO rate std deviation(IO速率标准差,反映数据节点间处理均衡性)、Test exec time sec(测试执行时间,如500秒)。HiBench是Intel开发的综合基准测试工具,包含HDFS、MapReduce、Spark等多个模块,支持自定义测试场景(如数据规模、并发数),适合评估HDFS在实际业务中的性能表现。
mvn -Phadoopbench -Psparkbench -Dspark=3.0 -Dscala=2.12 -Dhadoop=3.2 clean package -e(根据实际Spark、Hadoop版本调整参数)。conf/hadoop.conf文件,设置Hadoop安装路径(hadoop.home)和资源池参数(如yarn.scheduler.maximum-allocation-mb);修改conf/spark.conf文件,配置Spark安装路径和相关参数。conf/frameworks.lst文件,勾选需要测试的模块(如hdfs、mapreduce),例如添加hdfs以测试HDFS性能。./bin/run_all.sh,工具会自动执行配置的测试用例,并生成详细的性能报告(位于HiBench/report目录)。fio是Linux下灵活的I/O测试工具,可直接测试磁盘的读写性能(绕过HDFS),帮助定位磁盘是否为性能瓶颈(如磁盘IO速度慢、IOPS不足)。
yum install -y fio(CentOS默认仓库已提供fio包)。fio -filename /home/atguigu/test.log -direct 1 -iodepth 1 -thread -rw read -ioengine psync -bs 16k -size 2G -numjobs 10 -runtime 60 -group_reporting -name test_r。其中,-filename指定测试文件路径(需足够大,如2GB)、-direct 1表示绕过系统缓存(避免缓存影响结果)、-iodepth 1表示IO队列深度(可根据磁盘性能调整)、-rw read表示测试读性能、-bs 16k表示块大小(HDFS常用块大小为128MB或64MB,可匹配调整)、-numjobs 10表示并发线程数。fio -filename /home/atguigu/test.log -direct 1 -iodepth 1 -thread -rw write -ioengine psync -bs 16k -size 2G -numjobs 10 -runtime 60 -group_reporting -name test_w(将rw改为write即可)。read/write bandwidth(读/写带宽,如120MB/s)、read/write IOPS(读/写IOPS,如7500)、latency(延迟,如10ms)。三、注意事项
-direct 1参数绕过系统缓存;TestDFSIO本身通过MapReduce任务生成数据,缓存影响较小,但仍可通过重启集群或清理缓存(sync; echo 3 > /proc/sys/vm/drop_caches)进一步减少干扰。