温馨提示×

Ubuntu Hadoop 性能测试怎么做

小樊
41
2026-01-03 10:33:09
栏目: 智能运维

Ubuntu Hadoop 性能测试实操指南

一 测试准备与基线

  • 环境与权限
    • 确认 JDK 8+ 已安装,Hadoop 各服务正常,节点间 SSH 免密/etc/hosts 解析正确。
    • 统一测试用户与目录,避免权限与配额干扰:
      • 创建测试目录并赋权:hadoop fs -mkdir -p /user/test && hadoop fs -chown $USER:$USER /user/test
      • 视需要设置空间配额:hadoop dfsadmin -setSpaceQuota 500g /user/test
  • 退出安全模式并预热
    • 退出安全模式:hadoop dfsadmin -safemode leave
    • 预热 NameNode 目录与缓存(可选):hadoop fs -ls -R / > /dev/null
  • 记录基线
    • 记录 Hadoop 版本OS 版本CPU/内存/磁盘型号网络带宽HDFS 副本数YARN 容器与内存配置,便于复测对比与瓶颈定位。

二 核心测试与命令

  • HDFS 吞吐基准 TestDFSIO(推荐)
    • 写测试(例如 10 个文件、每个 1GB,结果写入当前目录的 result.log):
      • yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-*.tests.jar TestDFSIO -write -nrFiles 10 -size 1GB -resFile result.log
    • 读测试(读取上一步写入的数据):
      • yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-*.tests.jar TestDFSIO -read -nrFiles 10 -size 1GB -resFile result.log
    • 清理测试数据:
      • yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-*.tests.jar TestDFSIO -clean
    • 关键指标:Throughput mb/secAverage IO rate mb/secIO rate std deviationTest exec time sec
  • 计算与调度基准
    • 微型作业(MRBench,验证作业调度与基本 Map/Reduce 路径):
      • yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-*.tests.jar MRBench -numRuns 10
    • NameNode 压力(NNBench,模拟大量元数据操作):
      • yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-*.tests.jar NNBench -operation create_write -maps 10 -reduces 1 -blockSize 128M -numberOfFiles 1000 -bytesToWrite 0
    • 排序基准(TeraSort,端到端吞吐与 Shuffle 能力):
      • 生成数据:yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar teragen 100000000 /user/test/teragen
      • 执行排序:yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar terasort /user/test/teragen /user/test/terasort
      • 校验结果:yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar teravalidate /user/test/terasort /user/test/teravalidate
  • 综合基准套件 HiBench(可选)
    • 覆盖 micro、sql、ml、graph、websearch、streaming 等负载(如 WordCount、Sort、TeraSort、PageRank、KMeans 等),适合对比不同框架或参数组合。
    • 基本流程:配置 hadoop.conf/spark.conf(Hadoop/Spark 安装路径、并发度、数据规模等),选择用例后运行脚本(如 ./bin/run_all.sh)。

三 结果记录与判读

  • TestDFSIO 输出示例
    • 写入阶段
      ----- TestDFSIO ----- : write
          Date & time: Thu Dec 14 13:21:57 CST 2023
      Number of files: 10
      Total MBytes processed: 1000
        Throughput mb/sec: 49.72
      Average IO rate mb/sec: 190.11
      IO rate std deviation: 75.6
         Test exec time sec: 27.01
      
    • 读取阶段
      ----- TestDFSIO ----- : read
          Date & time: Thu Dec 14 13:36:56 CST 2023
      Number of files: 10
      Total MBytes processed: 1000
        Throughput mb/sec: 631.31
      Average IO rate mb/sec: 655.3
      IO rate std deviation: 127
      
    • 判读要点
      • 关注 Throughput mb/sec(整体吞吐)、Average IO rate mb/sec(并发平均速率)与 std deviation(波动);写入常受 网络带宽/磁盘写 影响,读取更偏 磁盘读/缓存命中
  • 作业级指标
    • 从作业历史(JobHistory/ResourceManager UI)记录:总耗时Map/Reduce 任务数Shuffle 数据量失败/重试次数容器资源使用峰值,用于定位计算与调度瓶颈。

四 网络与系统层验证

  • 网络带宽与延迟
    • 节点间带宽测试(示例,服务端在 192.168.1.10,客户端在测试机):
      • 服务端:iperf3 -s
      • 客户端:iperf3 -c 192.168.1.10 -t 30 -P 4
    • 延迟与丢包:ping -c 100 <目标IP>,观察 RTT 分布与丢包率
  • 磁盘 I/O 基线
    • 使用 fio 验证单机磁盘顺序/随机性能(排除 HDFS 层影响):
      • 顺序写:fio -filename /data/test.log -direct=1 -iodepth=1 -thread -rw=write -ioengine=psync -bs=1M -size=10G -numjobs=4 -runtime=60 -group_reporting -name=seq_write
      • 顺序读:fio -filename /data/test.log -direct=1 -iodepth=1 -thread -rw=read -ioengine=psync -bs=1M -size=10G -numjobs=4 -runtime=60 -group_reporting -name=seq_read
  • 结果联动分析
    • HDFS 写吞吐 ≈ 网络带宽HDFS 读吞吐 ≈ 磁盘读吞吐,说明瓶颈在底层资源;若明显低于资源上限,需进一步排查 副本数、块大小、并发度、压缩、调度策略 等。

五 测试流程与注意事项

  • 标准流程
    • 基线记录 → 预热集群 → 执行 TestDFSIO 写 → 执行 TestDFSIO 读 → 运行 MRBench/NNBench/TeraSort → 运行 HiBench(可选)→ 网络/磁盘基线 → 汇总与对比。
  • 稳定性与可重复性
    • 同规模测试 至少重复 3 次 取中位数;测试前清理残留数据(TestDFSIO -clean),避免缓存干扰;尽量在 非高峰期 执行。
  • 参数建议
    • 让测试规模覆盖生产常见场景:例如 文件数 ≥ 集群 DataNode 数 × 2–3、单文件大小 ≥ 1GB(或接近生产平均对象大小);根据集群规模调整 map/reduce 并发容器内存,避免 OOM 或过度切片。
  • 结果归档
    • 统一保存:命令与参数、集群与硬件配置、测试输出日志、关键指标表格与图表,便于回溯与对比优化效果。

0