holodesk表自动分桶数如何计算

  其他常见问题
内容纲要

概要描述


从 ArgoDB 3.2.2 版本开始,系统支持自动分桶功能。当创建分桶表时,如果未使用 INTO <num_buckets> BUCKETS 手动指定分桶数,ArgoDB 会根据集群的磁盘配置自动计算一个合理的默认分桶数,无需用户手动指定,简化了建表操作。

详细说明


自动分桶计算规则

默认分桶数的计算公式为:默认分桶数 = 大于(数据磁盘总数 × 2 ) 的最近一个质数

其中“数据磁盘总数”是指集群中所有 TabletServer 节点上配置的物理磁盘数量(即 tabletserver.store.datadirs 配置项中指定的磁盘目录数量之和)。

参数控制

该计算规则由参数 argodb.default.bucket.ratio 控制,该参数用于调整磁盘总数的乘数因子。

  • 在 ArgoDB 6.0.2 之前,该参数的默认值为 5。
  • 在 ArgoDB 6.0.2 及之后版本,默认值已调整为 2,以降低默认分桶数,避免产生过多小文件。

用户可以通过 SET 语句临时修改该参数,例如:SET argodb.default.bucket.ratio=3;

示例说明

假设集群配置如下:

  • TabletServer 节点数:4 个
  • 每个 TabletServer 配置的 tabletserver.store.datadirs 数量:3 个

则数据磁盘总数 = 4 × 3 = 12。按照默认规则(argodb.default.bucket.ratio=2),计算过程为:磁盘总数 × 2 = 12 × 2 = 24,取大于 24 的最近质数:29

因此,执行以下建表语句时,系统会自动将分桶数设置为 29:

CREATE TABLE testholo(id INT, name STRING) 
CLUSTERED BY (id) 
STORED AS HOLODESK;

验证分桶数:

SHOW CREATE TABLE testholo; 输出结果中,CLUSTERED BY (id) INTO 29 BUCKETS 即表示自动分桶生效。

FAQ:

如果tabletserver.store.datadirs配置的目录名称比较固定,比如截图中都是以/mnt/ 开头,可以参考截图ctrl+f计算,120*2,向上取第一个质数,即241.

file

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。