30个节点的Doris集群,每个节点有2块7TB的SSD盘,12块8TB的机械盘,分区和分桶的最佳实践

针对30个节点(每个节点配备2块7TB NVMe盘 + 12块8TB SATA盘)的Doris集群,以下是分区与分桶的最佳实践方案:


一、硬件资源规划与存储优化

  1. 存储介质分层
    NVMe盘:用于存储 热数据分区(如最近3天数据)、元数据高频查询表,利用其高IOPS特性提升实时查询性能。
    SATA盘:存储 冷数据分区(如历史数据)、大宽表批量导入的中间数据,通过成本优势支撑海量存储。
  2. 磁盘负载均衡
    • 每个节点的14块硬盘(2 NVMe + 12 SATA)建议划分为两类存储组:
    NVMe组:独立管理,承载热数据分区的2副本;
    SATA组:承载冷数据分区的1副本及热数据的第3副本,避免单盘过载。
    • 通过SHOW REPLICA DISTRIBUTION监控分片分布,确保每块硬盘承载的分片数差异≤5%。
  3. 配置存储组
storage_root_path=/home/disk1/doris,medium:hdd;/home/disk2/doris,medium:ssd
# 说明
# /home/disk1/doris,medium:hdd,表示存储介质是HHD;
#/home/disk2/doris,medium:ssd,表示存储介质是SSD;

二、分区策略设计

1. 分区类型与粒度

时间序列数据:采用 Range动态分区,按天/周分区(如p20250313),单分区原始数据量控制在 50-80TB(压缩后约5-8TB),动态保留最近30天分区。

  ALTER TABLE logs SET (
    "dynamic_partition.enable" = "true",
    "dynamic_partition.time_unit" = "DAY",
    "dynamic_partition.end" = "30",
    "storage_medium" = "NVMe"  -- 热数据分区存储介质
    "dynamic_partition.storage_medium" = "hdd",  -- 最终存储介质
    "dynamic_partition.hot_partition_num" = "2" -- 最近2天分区保留在SSD
  );

离散值数据:采用 List分区(如按业务线business字段枚举),每个分区数据量≤20TB,通过ALTER TABLE ... DROP PARTITION快速清理无效数据。

2. 冷热数据迁移

• 热数据分区(NVMe)满3天后自动迁移至SATA盘:

ALTER TABLE logs MODIFY PARTITION p20250310 SET ("storage_medium"="SATA");

• 对历史分区启用 TTL策略,自动清理90天前数据。


三、分桶策略设计

1. 分桶键选择

高基数列优先:如用户ID、设备ID等,哈希分布均匀性≥95%(通过SELECT COUNT(DISTINCT bucket_id)验证)。
复合分桶键:对存在局部热点的场景(如地域+时间),组合2-3列降低倾斜概率。

2. 分桶数量计算

总分桶数:根据集群总磁盘数(30节点 ×14盘=420盘),建议总分桶数 400-420,每盘承载约1个分桶。
单分桶大小:目标压缩后 5-8GB,计算公式:
分桶数 = 单分区压缩后大小(TB) × 1024 目标单桶大小(GB) × 1.2 \text{分桶数} = \frac{\text{单分区压缩后大小(TB)} \times 1024}{\text{目标单桶大小(GB)}} \times 1.2 分桶数=目标单桶大小(GB单分区压缩后大小(TB×1024×1.2
示例:50TB分区压缩后5TB
分桶数 = 5 × 1024 / 5 × 1.2 ≈ 1228 分桶数=5 \times 1024 / 5 \times 1.2 ≈ 1228 分桶数=5×1024/5×1.21228
取整为 1280桶

3. 分桶与硬件匹配

热数据分桶:分配到NVMe盘组,每个BE节点(NVMe盘)承载 40-50个分桶,支撑高并发点查。
冷数据分桶:分配到SATA盘组,每个BE节点(SATA盘)承载 80-100个分桶,优化批量扫描吞吐。


四、高级优化技巧

  1. Colocate Join优化
    对关联表(如订单表与用户表)采用 相同分桶键+分桶数,减少Shuffle开销,提升JOIN性能30%+。

  2. 资源隔离策略
    • 标签化资源组:将NVMe盘绑定到Online标签处理实时查询,SATA盘绑定到Offline标签处理ETL任务。
    • 动态资源分配:白天高峰期限制ETL任务仅使用SATA资源组,夜间全量开放NVMe资源。

  3. 分片合并与分裂
    • 定期执行ALTER TABLE ... COMPACT合并小分片(<1GB),控制总分片数≤30万(30节点 ×1万/节点)。
    • 对数据增长超预期的分区动态增加分桶数:

    ALTER TABLE logs ADD PARTITION p20250401 BUCKETS 1600;
    

五、灾难恢复与扩展性

  1. 副本策略
    热数据3副本(2 NVMe +1 SATA),冷数据2副本(全SATA),平衡可靠性与成本。

  2. 扩容预设计
    预留20%分桶冗余,未来扩容时:
    • 增加NVMe节点:直接加入Online资源组提升实时能力;
    • 增加SATA节点:通过ALTER SYSTEM ADD BACKEND扩展冷存储池。


验证与监控

  1. 数据分布检查

    SHOW REPLICA DISTRIBUTION FROM logs;  -- 分片均匀性
    EXPLAIN SELECT ... WHERE date='2025-03-13';  -- 分区裁剪效果
    
  2. 性能压测
    对比NVMe与SATA分区的查询延迟,确保热数据TP99≤100ms,冷数据TP99≤2s。


通过上述策略,可在30节点混合存储集群中实现 热数据高并发响应冷数据低成本存储全局负载均衡。实际配置需结合业务查询模式进一步调优,建议通过灰度发布验证后再全量上线。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值