在 CentOS 上测试 HDFS 性能,通常有两种常见方式:Hadoop 自带测试工具(最常用) 和 第三方压测工具(如 TestDFSIO、nload、fio 等辅助)。下面按实际工作中最常用的方法给你说明。
HADOOP_HOME)验证 HDFS 是否正常:
hdfs dfs -ls /
yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-*.jar TestDFSIO \
-write \
-nrFiles 10 \
-fileSize 1000 \
-resFile /tmp/TestDFSIO_write.log
参数说明:
-nrFiles:文件数量-fileSize:每个文件大小(MB)yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-*.jar TestDFSIO \
-read \
-nrFiles 10 \
-fileSize 1000 \
-resFile /tmp/TestDFSIO_read.log
yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-*.jar TestDFSIO -clean
cat /tmp/TestDFSIO_write.log
cat /tmp/TestDFSIO_read.log
关注指标:
time hdfs dfs -put /dev/zero /testfile_1g -D dfs.blocksize=134217728
time hdfs dfs -cat /testfile_1g > /dev/null
适合快速验证网络或磁盘瓶颈。
yum install -y nload
nload
yum install -y sysstat
iostat -x 1
top
free -h
| 现象 | 可能问题 |
|---|---|
| 写慢 | 网络、DataNode 磁盘、副本数 |
| 读慢 | 网络、块分布、客户端位置 |
| CPU 高 | 压缩、加密、副本均衡 |
| IO 等待高 | 磁盘性能差 |
dfs.blocksize
dfs.replication
dfs.client.write.packet.size
mapreduce.task.io.sort.mb
如果你愿意,可以告诉我:
我可以直接给你一套针对性的测试方案。