性能

计算 Ratis 管道限制

师成师成· 更新于 2026-09-28· 阅读 4 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

ReplicationFactor.THREE 由三个配置属性控制,它们分别在集群级别和 Datanode 级别上限制集群中的管道数量。SCM 创建的管道数量受这些限制的约束。

  1. 集群级限制(ozone.scm.ratis.pipeline.limit)

    • 描述:整个集群中已打开的 Ratis 管道总数的绝对全局上限。这是管道总数的最终上限。
    • 默认值:0(默认表示没有全局限制)。
  2. Datanode 级固定限制(ozone.scm.datanode.pipeline.limit)

    • 描述:设置为正数时,此属性为每个 Datanode 定义一个固定的管道最大数量。
    • 默认值:2
    • 集群级限制计算:如果设置了此属性,集群中的管道数量还会受到 (<此值> * <健康 Datanode 数量>) / 3 的额外限制。
  3. Datanode 级动态限制(ozone.scm.pipeline.per.metadata.disk)

    • 描述:当 ozone.scm.datanode.pipeline.limit 未设置为正数时,此属性生效。它根据每个 Datanode 可用的元数据磁盘数量计算动态限制。
    • 默认值:2

限制的应用方式

SCM 首先根据Datanode 级固定限制或Datanode 级动态限制计算目标管道数量,然后将该计算结果与集群级限制进行比较,取最小值作为最终的已打开管道目标数量。

示例(动态限制):

考虑一个有 10 个健康 Datanode 的集群。

  • 8 个 Datanode 各有 4 个元数据磁盘。
  • 2 个 Datanode 各有 2 个元数据磁盘。

配置如下:

  • ozone.scm.ratis.pipeline.limit = 30(设置了全局上限)
  • ozone.scm.datanode.pipeline.limit = 0(使用动态计算)
  • ozone.scm.pipeline.per.metadata.disk = 2(默认值)

计算步骤:

  1. 计算第一组 Datanode 的限制:8 个 Datanode * (2 管道/磁盘 * 4 磁盘/Datanode) = 64 条管道
  2. 计算第二组 Datanode 的限制:2 个 Datanode * (2 管道/磁盘 * 2 磁盘/Datanode) = 8 条管道
  3. 计算动态限制的原始目标总数:(64 + 8) / 3 = 24
  4. 与全局限制比较:min(24, 30) = 24

SCM 将尝试创建并维护大约 24 条打开的、FACTOR_THREE 的 Ratis 管道。

生产环境建议:

对于大多数生产环境部署,建议使用按磁盘动态计算的限制(ozone.scm.datanode.pipeline.limit=0),因为它能让集群的管道容量随资源自然扩展。如有需要,可以使用全局限制(ozone.scm.ratis.pipeline.limit)作为安全上限。ozone.scm.pipeline.per.metadata.disk 的推荐初始值为 2。请监控 SCM Web UI 中的 Pipeline Statistics 部分,或运行命令 ozone admin pipeline list,以查看实际管道数量是否与你配置的目标一致。

评论

登录后参与评论

正在加载评论…