doris集群出现数据倾斜如何定位及排查?

提问者:Rae 问题分类:面试刷题
doris集群出现数据倾斜如何定位及排查?
2 个回答
ε呆萌小鹿з不迷路
ε呆萌小鹿з不迷路
整体的思路如下:
1、检查数据量的分布
-- 查看BE节点数据量分布 (MB)
SHOW PROC'/backends'\G
-- 各BE的`DataUsedCapacity`差异超过30%即为倾斜
-- 查看表分桶数据分布
ADMIN SHOW REPLICA DISTRIBUTION FROM 数据库名.表名;
-- 若某个分桶的`ReplicaCount`显著高于其他分桶,则存在分桶倾斜
Show tablet from table\G
2、通过系统表information_schema 或内置命令查看数据分布:
-- 查看每个 Tablet 的数据量和行数
SELECT
  tablet_id,
  data_size,
  row_count,
  partition_id,
  backend_id
FROM
  information_schema.tablet_meta
WHERE
  table_name ='your_table'
ORDER BY
  data_size DESC;
 
-- 查看表分桶大小分布
SELECT
 partition_id,
 bucket_num,
 count(1) tablet_count,
 sum(data_size)/1024/1024 as total_mb
FROM
 information_schema.tablet_meta
WHERE
 table_name ='表名'
GROUP BY
 partition_id, bucket_num
ORDER BY
 total_mb DESC;
-- 输出说明:
-- 若某个bucket_num的total_mb是平均值的3倍以上 → 分桶键设计问题
-- 若某partition_id下所有bucket都偏大 → 分区键设计问题
发布于:3周前 (04-07) IP属地:
曾经多难忘
曾经多难忘
3、使用tabelt分析工具
https://starrocks-public.oss-cn-zhangjiakou.aliyuncs.com/tools.tar.gz下载完成后编辑config.ini信息,然后执行
./healthy_report config.ini
会列出标准差那列,如果异常高,则表示该表需要重新选取hash键,建表不合理有严重的数据倾斜问题。除此还可以关注下tablet数据平均值是否合理,首先预估每个分区的数据量,然后按照每 1GB -10 GB 原始数据一个 tablet 计算,从而确定分桶数量。
4、使用explain执行计划分析,关注点主要有:
SCAN 阶段:是否命中分区/分桶裁剪?数据扫描量是否过大?
JOIN 阶段:是否触发 Colocate/Bucket Shuffle Join?是否存在数据倾斜?
AGGREGATE 阶段:是否过度聚合?是否启用两阶段优化?
发布于:3周前 (04-07) IP属地:
我来回答