hadoop version命令验证安装版本;检查集群节点状态(hdfs dfsadmin -report查看DataNode状态,yarn node -list查看NodeManager状态),确保所有节点正常运行。/benchmarks目录下的残留文件),避免旧数据干扰结果;关闭不必要的后台进程,减少系统资源占用。Hadoop自带基准工具
teragen生成数据、teravalidate验证结果),测试集群在大规模数据排序场景下的性能。第三方工具
写性能测试:
在集群任意节点执行以下命令(以10个1GB文件为例):
yarn jar /path/to/hadoop-mapreduce-client-jobclient-tests.jar TestDFSIO -write -nrFiles 10 -size 1GB -resFile /tmp/TestDFSIO_write.log
参数说明:-nrFiles指定文件数量,-size指定单个文件大小,-resFile保存结果日志。
读性能测试:
读取之前写入的文件,执行:
yarn jar /path/to/hadoop-mapreduce-client-jobclient-tests.jar TestDFSIO -read -nrFiles 10 -size 1GB -resFile /tmp/TestDFSIO_read.log
结果分析:
查看日志中的Throughput mb/sec(集群整体吞吐量)、Average IO rate mb/sec(单个文件的平均IO速率)、MapReduce Job Counters(任务计数器)等指标,判断HDFS读写性能瓶颈(如网络带宽、磁盘IO)。
模拟高并发NameNode操作,执行:
yarn jar /path/to/hadoop-mapreduce-client-jobclient-tests.jar nnbench -operation create_write -maps 30 -reduces 3 -numberOfFiles 10000 -replicationFactorPerFile 3 -baseDir /benchmarks/NNBench-$(hostname)
参数说明:-maps指定Map任务数(模拟并发请求数),-reduces指定Reduce任务数,-numberOfFiles指定创建的文件数量,-replicationFactorPerFile指定文件副本数。
验证集群对小作业的处理效率,执行:
yarn jar /path/to/hadoop-mapreduce-client-jobclient-tests.jar mrbench -numRuns 50 -maps 2 -reduces 1 -inputLines 10 -inputType descending
参数说明:-numRuns指定作业重复次数,-maps/-reduces指定任务数,-inputLines指定输入行数。
生成测试数据:
使用teragen生成1TB数据(约100万行,每行1KB):
yarn jar /path/to/hadoop-mapreduce-examples.jar teragen 10000000 /benchmarks/teragen_data
执行排序:
使用terasort对数据进行排序:
yarn jar /path/to/hadoop-mapreduce-examples.jar terasort /benchmarks/teragen_data /benchmarks/terasort_output
验证结果:
使用teravalidate验证排序结果的正确性:
yarn jar /path/to/hadoop-mapreduce-examples.jar teravalidate /benchmarks/terasort_output /benchmarks/teravalidate_result
测试HDFS底层存储的磁盘IO性能(以顺序写为例):
fio --filename=/tmp/fio_testfile --direct=1 --iodepth=64 --thread --rw=write --ioengine=libaio --bs=16k --size=1G --numjobs=4 --runtime=60 --group_reporting --name=test_write
参数说明:--filename指定测试文件路径,--direct=1启用直接IO(绕过缓存),--iodepth=64设置IO队列深度,--rw=write指定写操作,--bs=16k设置块大小,--size设置测试文件大小,--numjobs=4设置并发任务数。
Throughput mb/sec低,可能是网络带宽不足(需检查iperf测试结果)或磁盘IO性能差(需优化磁盘阵列或更换SSD)。Average IO rate mb/sec低,可能是磁盘本身性能瓶颈(如机械硬盘转速低),建议升级为NVMe SSD。nnbench测试中任务执行慢,可能是NameNode内存不足(需增加NameNode堆内存)或RPC请求过多(需优化客户端请求频率)。mrbench测试中作业执行时间长,可能是YARN调度开销大(需调整YARN调度器参数,如yarn.scheduler.minimum-allocation-mb)。