Linux环境下Hadoop性能测试指南
core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml等配置文件的校验(如HDFS副本数、YARN资源分配等)。teragen生成TeraSort测试数据)。Hadoop自带工具:
-nrFiles)、大小(-size),生成吞吐量(MB/sec)、IO速率(MB/sec)等指标。-maps(mapper数量)、-numberOfFiles(文件数量)参数,评估NameNode的处理能力。-numRuns(运行次数)参数控制。teragen(生成随机数据)、TeraSort(排序)、teravalidate(验证结果)三个步骤,用于评估大规模数据排序性能。第三方工具:
frameworks.lst选择测试项,生成详细的性能报告。-bs(块大小)、-iodepth(IO深度)、-numjobs(并发数)等参数,评估底层存储性能。HDFS写性能测试:
使用TestDFSIO测试向HDFS写入大量数据的性能,命令示例:
yarn jar /path/to/hadoop-mapreduce-client-jobclient-tests.jar TestDFSIO -write -nrFiles 10 -size 1GB
参数说明:-nrFiles表示生成10个文件,-size表示每个文件大小为1GB,结果中的Throughput mb/sec为集群整体写入吞吐量。
HDFS读性能测试:
使用TestDFSIO测试从HDFS读取之前写入数据的性能,命令示例:
yarn jar /path/to/hadoop-mapreduce-client-jobclient-tests.jar TestDFSIO -read -nrFiles 10 -size 1GB
结果中的Average IO rate mb/sec为每个文件的平均IO速率,反映磁盘读取性能。
NameNode负载测试:
使用nnbench模拟NameNode的高并发元数据操作,命令示例:
yarn jar /path/to/hadoop-mapreduce-client-jobclient-tests.jar nnbench -operation create_write -maps 30 -reduces 3 -numberOfFiles 10000
参数说明:-maps表示30个mapper并发创建文件,-numberOfFiles表示创建10000个文件,评估NameNode处理元数据请求的能力。
小作业效率测试:
使用mrbench多次运行小作业,检查集群对小作业的处理效率,命令示例:
yarn jar /path/to/hadoop-mapreduce-client-jobclient-tests.jar mrbench -numRuns 50 -maps 2 -reduces 1
参数说明:-numRuns表示运行50次,-maps和-reduces分别表示每次作业的mapper和reducer数量,结果中的Job Runtime反映小作业的执行时间。
大规模数据排序测试:
使用Terasort测试大规模数据排序性能,步骤如下:
yarn jar /path/to/hadoop-mapreduce-client-jobclient-tests.jar teragen 10000000000 /benchmarks/teragen-1tyarn jar /path/to/hadoop-mapreduce-client-jobclient-tests.jar TeraSort /benchmarks/teragen-1t /benchmarks/terasort-1tyarn jar /path/to/hadoop-mapreduce-client-jobclient-tests.jar teravalidate /benchmarks/terasort-1t /benchmarks/teravalidate-1tSort Time反映排序作业的总执行时间。磁盘IO性能测试:
使用fio测试HDFS数据节点的磁盘IO性能,顺序读测试命令示例:
fio -filename /data/testfile -direct 1 -iodepth 32 -thread -rw read -ioengine libaio -bs 128k -size 10G -numjobs 4 -runtime 60 -group_reporting -name disk_read
参数说明:-filename指定测试文件路径,-direct 1表示绕过缓存,-iodepth 32表示IO队列深度,-rw read表示顺序读,结果中的read: IOPS和read: BW分别表示IO操作每秒和带宽。
iperf测试集群节点间带宽)、磁盘IO性能(如fio测试磁盘速率)是否成为瓶颈。top、vmstat等工具监控集群CPU、内存、网络使用率,若CPU利用率过高,可调整MapReduce任务的并行度(mapreduce.tasktracker.map.tasks.maximum);若内存不足,可增加YARN容器内存(yarn.scheduler.maximum-allocation-mb)。dfs.blocksize,适合大文件排序场景)、调整副本数量(dfs.replication,减少副本可提高写入吞吐量)、增加DataNode数量(提升存储和计算能力)。