HDFS异步EditLog性能测试

2021-09-04  本文已影响0人  xudong1991

测试环境

一共使用3台现网机器搭建 HA 环境,配置如下,另外,NN、JN 的 JVM 参数也和现网保持一致。

项目 数值
CPU 96 核 AMD EPYC 7K62
内存 256G
磁盘 3.6TB X 12块
网卡 50Gb(由两块 25Gb 的物理网卡聚合而成)
NN handler count 256
NN Reader count 4
NN EditLog 目录、JN EditLog 目录 务必配置在不同的磁盘,减少互相影响
Hadoop 版本 hadoop-2.8.5-tq-0.1.0.tar.gz

开启/关闭 EditLog Async Write 特性

在 NN 侧,使用如下配置开启或关闭 NN 异步 EditLog 特性(目前该特性默认开启):

<property>
    <name>dfs.namenode.edits.asynclogging</name>
    <value>true</value>
</property>

测试1:单线程写,串行 create+close 创建30W个文件

场景 总耗时(s) 单次 create + close 平均耗时(ms)
EditLog 同步写 318.339 1.06
EditLog 异步写 294.353 0.98
异步写相比于同步写性能 +7% +7%

测试2:多线程写, 200线程并发 create+close 创建 3000W 个文件

场景 总耗时(min) 单次 create + close 平均耗时(ms)
EditLog 同步写 50.42 0.101
EditLog 异步写 46.51 0.093
异步写相比于同步写 +7% +7%

测试3:混合读写, 50线程并发 create+close 创建1500W 个文件+100线程并发 open+close 读取6000W 次文件

这个测试模拟了一个极高负载的现网集群典型的一小时 NN RPC 吞吐量,即:

  1. 总 RPC 处理量:7500W 左右。
  2. 读写比例 8:2 左右。
场景 总耗时(min)
EditLog 同步写 44.14
EditLog 异步写 41.63
异步写相比于同步写 +5.7%

测试结论

  1. 该特性可将 NameNode 的处理能力提升 6%-7% 左右。
  2. 该特性值得合入低版本 Hadoop,相关的 patch 主要有:
    • HADOOP-10300. Allowed deferred sending of call responses.
    • HADOOP-12483. Maintain wrapped SASL ordering for postponed IPC responses.
    • HDFS-7964. Add support for async edit logging.
    • HDFS-10183. Prevent race condition during class initialization.
    • HDFS-10722. Fix race condition in TestEditLog#testBatchedSyncWithClosedLogs.
    • HDFS-12603. Enable async edit logging by default.
    • HDFS-13051. Fix dead lock during async editlog rolling if edit queue is full.
    • HDFS-15175. Multiple CloseOp shared block instance causes the standby namenode to crash when rolling editlog.
上一篇 下一篇

猜你喜欢

热点阅读