0


Apache Doris 系列:Bucket(分桶)数量设置建议

Bucket(分桶)数量设置不当带来的问题

问题描述:

上线运行一段时间后,随着越来越多的数据增长,集群每次重启后一周左右,读写就会开始变得越来越慢,直到无法正常进行读写。

问题处理:
  • 对数仓表的 Schema 的分析,发现有些表数据并不大,但是 Bucket 却设置的非常大
  • 通过show data from table命令列出所有表Bucket信息,大部分的Bucket设置不合理
  • 按照官方的建议将调整Bucket设置,调整后集群逐步恢复正常的读写

关于 Partition 和 Bucket 的数量和数据量的建议

  • 一个表的 Tablet 总数量等于 (Partition num * Bucket num)
  • 数量原则: 一个表的 Tablet 数量,在不考虑扩容的情况下,推荐略多于整个集群的磁盘数量
  • 数据量原则:单个 Tablet 的数据量理论上没有上下界,但建议在 1G - 10G 的范围内。如果单个 Tablet 数据量过小,则数据的聚合效果不佳,且元数据管理压力大。如果数据量过大,则不利于副本的迁移、补齐,且会增加 Schema Change 或者 Rollup 操作失败重试的代价(这些操作失败重试的粒度是 Tablet)
  • **当 Tablet 的数据量原则和数量原则冲突时,建议优先考虑数据量原则
  • 在建表时,每个分区的 Bucket 数量统一指定。但是在动态增加分区时(ADD PARTITION),可以单独指定新分区的 Bucket 数量。可以利用这个功能方便的应对数据缩小或膨胀
  • 一个 Partition 的 Bucket 数量一旦指定,不可更改。所以在确定 Bucket 数量时,需要预先考虑集群扩容的情况。比如当前只有 3 台 host,每台 host 有 1 块盘。如果 Bucket 的数量只设置为 3 或更小,那么后期即使再增加机器,也不能提高并发度
  • 举一些例子:假设在有10台BE,每台BE一块磁盘的情况下。如果一个表总大小为 500MB,则可以考虑4-8个分片。5GB:8-16个分片。50GB:32个分片。500GB:建议分区,每个分区大小在 50GB 左右,每个分区16-32个分片。5TB:建议分区,每个分区大小在 50GB 左右,每个分区16-32个分片

注:表的数据量可以通过 SHOW DATA 命令查看,结果除以副本数,即表的数据量


本文转载自: https://blog.csdn.net/weixin_47298890/article/details/128948432
版权归原作者 修破立生 所有, 如有侵权,请联系我们删除。

“Apache Doris 系列:Bucket(分桶)数量设置建议”的评论:

还没有评论