在开始测试前,需完成以下基础配置:
TestDFSIO是Hadoop生态中最常用的HDFS性能测试工具,可快速评估集群的读/写吞吐量(核心指标)。
写吞吐量测试:生成指定数量的文件并写入HDFS,统计集群整体写入速度。
命令示例(生成10个1GB文件,每个文件块大小为128MB):
yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-*.jar TestDFSIO -write -nrFiles 10 -fileSize 1G -blockSize 128M
输出关键指标:Throughput per cluster(集群写吞吐量,单位MB/s)、Total MBytes processed(总数据量)、Average IO rate(平均IO速率)。
读吞吐量测试:读取之前写入的文件,统计集群读取速度(需先完成写测试)。
命令示例:
yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-*.jar TestDFSIO -read -nrFiles 10 -fileSize 1G -blockSize 128M
输出关键指标:Throughput per cluster(集群读吞吐量,通常高于写吞吐量,因读采用数据本地化策略)。
fio是灵活的I/O测试工具,可深入评估磁盘的IOPS(每秒输入输出操作数)、**延迟(响应时间)**等指标,需配合hdfs-fuse将HDFS挂载为本地文件系统。
sudo apt-get install hadoop-hdfs-fuse # Ubuntu默认仓库可能需添加Hadoop源
mkdir /mnt/hdfs
hadoop-fuse-dfs dfs://namenode-ip:9000 /mnt/hdfs # 替换为实际NameNode IP
fio --name=random-write --ioengine=libaio --rw=randwrite --bs=4k --numjobs=1 --size=1G --runtime=60 --group_reporting --directory=/mnt/hdfs
输出关键指标:IOPS(随机写IOPS)、latency (avg)(平均延迟,单位微秒)。HiBench是Intel开发的大数据基准测试套件,涵盖HDFS、MapReduce、Spark等多个组件,可模拟真实业务场景(如WordCount、Sort),评估集群综合性能。
mvn -Phadoopbench -Psparkbench -Dspark3.0 -Dscala2.12 -Dhadoop3.2 clean package -e # 根据实际Hadoop/Spark版本调整参数
conf/hadoop.conf文件,设置Hadoop安装路径:hadoop.home=/usr/local/hadoop
conf/frameworks.lst文件,选择需要测试的项目(如hdfs_read、hdfs_write)。./bin/run_all.sh # 执行所有测试用例
输出结果:各测试用例的执行时间、吞吐量、资源利用率(如CPU、内存占用)。通过Prometheus+Grafana组合实时监控HDFS的性能指标,帮助识别瓶颈(如NameNode RPC延迟、DataNode磁盘IO)。
hdfs-site.xml中启用Metrics收集:<property>
<name>dfs.namenode.metrics.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.datanode.metrics.enabled</name>
<value>true</value>
</property>
prometheus.yml中添加HDFS Job:scrape_configs:
- job_name: 'hdfs_namenode'
static_configs:
- targets: ['namenode-ip:9870'] # NameNode JMX端口
- job_name: 'hdfs_datanode'
static_configs:
- targets: ['datanode1-ip:9864', 'datanode2-ip:9864'] # DataNode JMX端口
dfs.blocksize、增加副本数量dfs.replication)并重新测试。