温馨提示×

Ubuntu Hadoop 性能如何测试

小樊
39
2025-12-20 19:01:36
栏目: 智能运维

Ubuntu Hadoop 性能测试实操指南

一 测试前准备

  • 集群状态与权限
    • 启动 HDFS 与 YARN 后,先退出安全模式:hadoop dfsadmin -safemode leave
    • 为测试用户准备目录与配额(示例为用户 mnclab):
      • 赋权:hadoop fs -chown mnclab:mnclab /user/mnclab
      • 配额:hadoop dfsadmin -setSpaceQuota 1t /user/mnclab(按需要调整大小)
  • 环境与版本要点
    • 建议使用 JDK 8(很多 Hadoop 发行版与基准工具在 JDK 8 下更稳妥)。
    • Hadoop 2.x 与 3.x 均可用;若使用 HiBench,部分教程与实践更偏向 Hadoop 2.7.x,部署前确认兼容性。

二 核心测试工具与命令

  • HDFS 吞吐基准 TestDFSIO(写/读/清理)

    • 写测试:hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-*.jar TestDFSIO -write -nrFiles 10 -fileSize 10000
    • 读测试:hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-*.jar TestDFSIO -read -nrFiles 10 -fileSize 10000
    • 清理数据:hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-*.jar TestDFSIO -clean
    • 关注指标:Throughput mb/secAverage IO rate mb/secIO rate std deviationTest exec time sec
  • MapReduce 功能与压力

    • 经典作业:hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-examples-*.jar wordcount in out
    • 小作业压力与 NameNode 压力:
      • mrbench(多小作业吞吐)
      • nnbench(元数据与 NameNode 压力)
    • 运行方式示例:
      • hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-*.jar mrbench -numRuns 10
      • hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-*.jar nnbench -operation create_write -maps 10 -reduces 10 -blockSize 1048576 -bytesToWrite 0 -numberOfFiles 1000
  • 排序基准 TeraSort(1TB 排序三步走)

    • 生成数据:hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar teragen 10000000000 /user/data/terasortinput
    • 执行排序:hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar terasort /user/data/terasortinput /user/data/terasortoutput
    • 结果校验:hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar teravalidate /user/data/terasortoutput /user/data/terasortvalidate
  • 综合基准套件 HiBench(多场景覆盖)

    • 覆盖 micro、ml、sql、graph、websearch、streaming 等,常见工作负载含 Sort、WordCount、TeraSort、PageRank、KMeans、SQL、DFSIO 等。
    • 使用步骤(概要):
      • 安装与配置 Hadoop 环境(确保 JAVA_HOME、HADOOP_HOME 正确,YARN 可用)。
      • 下载并配置 HiBench(配置 hadoop.conf、yarn-site.xml 相关项,如资源、队列、工作负载参数)。
      • 选择工作负载运行(如 ./run.sh hadoop wordcount),查看生成的 report 与日志。

三 网络与存储基线检查

  • 网络带宽与延迟
    • 带宽测试(节点间):在一台节点运行 iperf -s,在另一台运行 iperf -c <server_ip> -t 30,记录 Bandwidth
    • 延迟与丢包:ping <node_ip> -c 20,观察 RTT 与丢包率。
  • 磁盘 I/O 基线
    • 本地盘顺序读:hdparm -t /dev/sdX,确认单盘基线是否满足预期(示例阈值:> 70 MB/s)。

四 结果记录与瓶颈定位

  • 关键指标与判读
    • HDFS:TestDFSIO 的 Throughput mb/secIO rate std deviation(抖动越小越稳);大文件写入/读取是否受 网络带宽磁盘 I/O 限制。
    • MapReduce:作业总时长、Map/Reduce 耗时、Shuffle 数据量、失败重试次数;小作业吞吐(mrbench)与 NameNode 压力(nnbench)表现。
    • TeraSort:总耗时、是否通过 teravalidate、各阶段(生成/排序/验证)耗时分布。
    • HiBench:各工作负载的 throughput、latency、resource utilization,并与历史或目标值对比。
  • 快速定位思路
    • 写入慢:若 Throughput 接近网络上限,多为网络瓶颈;若远低于网络且磁盘繁忙,多为 磁盘/存储 瓶颈。
    • 读取慢:多检查 本地磁盘读性能数据本地性(Data Locality)。
    • 作业抖动大:观察 IO rate std deviation、Shuffle 与 GC 日志,排查热点与资源配置。

五 测试流程与注意事项

  • 标准流程
    • 基线采集:网络(iperf)、磁盘(hdparm)、HDFS 健康(hdfs dfsadmin -report)。
    • 预热:先跑一轮轻量作业(如 TestDFSIO -write/-read 小规模),避免首次运行缓存影响。
    • 正式测试:按“写 → 读 → 计算(WordCount/TeraSort/HiBench)”顺序执行,每类测试 ≥3 次取中位数
    • 清理:TestDFSIO 用 -clean 清理;大数据集(如 TeraSort)测试后可归档或删除。
  • 注意事项
    • 保持测试环境稳定(避免其他重负载干扰),配额与权限提前准备。
    • 资源与队列:为基准作业配置专用 YARN 队列 与合理 内存/核数,避免被其他任务抢占。
    • 版本匹配:HiBench 与 Hadoop 2.x/3.x 的兼容性需验证;遇到 “Get workers from yarn-site.xml page failed” 等配置问题,优先检查 HiBench 的 Hadoop/YARN 配置 与网络连通性。

0