在Doris集群运维中,磁盘均衡是保证数据高效存储和查询性能的关键。然而,由于数据分布不均、参数配置不当或环境异常,磁盘不均衡问题时有发生。本文将深入解析Doris磁盘均衡的优化方法、排查流程及常见问题解决方案,助你快速定位并解决问题。
-- 查看BE负载分布
SHOW PROC '/cluster_balance/cluster_load_stat/location_default/HDD';
-- 检查历史任务状态
SHOW PROC '/cluster_balance/history_tablets';常见失败原因:
-- 启用单副本平衡
ADMIN SET FRONTEND CONFIG('enable_disk_balance_for_single_replica'='true');
如果OtherUsedCapacity 很大,这时可能也会造成无法磁盘均衡,其他数据占用了很多空间需要手动清理。
SHOW PROC "/backends/be_id"; -- 定位大文件
# 检查BE日志
grep "IO Error" be.INFO
恢复步骤:
be/conf/下找见be_customer的文件,打开文件,注释掉被标注路径,重新启动BE节点
确认be.conf下storage_root_path数据存储路径是否显式指定了存储介质类型,如果没有冷热分层的需求去掉指定的存储介质类型,再重启be。
# 确保BE配置与表一致
storage_root_path=/data1;/data2
通过如下命令清理垃圾数据
-- 展示回收站元数据:
SHOW CATALOG RECYCLE BIN;
-- 设置回收站过期时间(如设置为0):
ADMIN SET FRONTEND CONFIG ("catalog_trash_expire_second" = "0");
-- 清理垃圾数据:
ADMIN CLEAN TRASH;
-- 恢复回收站默认过期时间(如1天):
ADMIN SET FRONTEND CONFIG ("catalog_trash_expire_second" = "86400");
注意
admin clean trash只是触发了clean trash去做清理任务,并不是立马会腾出空间,所以执行admin clean trash后并不会里面容量变低。后面异步任务会清理,这两个过期时间的文件。
如果过了一段时间后磁盘占用还是没有减少,执行以下操作
be.conf配置下面的参数,重启BE生效:
snapshot_expire_time_sec = 0
trash_file_expire_time_sec = 0
均衡是对同tag,且同storage medium上进行均衡的。如果表的replication allocation的tag 跟它所在backend的tag不一样,或者backend不含有该表的storage medium ,那么也是无法均衡的。
如果数据是有使用S3对象冷存的,那么tablet 开始冷存之后,这些tablet 不能在同BE的不同磁盘上挪动了,但仍可以迁移到其他BE节点上。
balance_slot_num_per_path=10 # 每路径的均衡任务槽位数
schedule_slot_num_per_hdd_path=10 # HDD路径调度任务槽位数
max_balancing_tablets=100 # 最大并行均衡任务数
clone_worker_count=6 # 跨BE副本迁移线程数
download_worker_count=3 # 数据下载线程数
通过上述方法,可有效应对Doris磁盘均衡问题。如遇复杂场景,建议参考官方文档或社区讨论获取支持。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。