Doris 数据副本分区均衡策略,fromBe has no replica in the map, can‘t move


前言

当前使用 Doris 版本为 0.14

某天观察到线上 Doris 集群资源使用情况,发现整体上内存、CPU 使用率较低,为降低成本进行了一波缩容操作。

缩容之后,大部分业务都能正常运行,但对于一些大吞吐的查询速度慢了很多,或者根本跑不出来。

在这里插入图片描述

进一步分析发现分区数据分布不均匀,出现的情况是,一部分节点数据多、一部分节点数据少,当查询计划具体分配到 BE 节点体现为部分节点负载高、部分负载低。

在这里插入图片描述


一、分区负载均衡

Doris 默认采用 「BeLoad」均衡策略,是按照磁盘负载来均衡数据。在单表来看,可能存在数据无法均衡到每个节点的问题,如:

在这里插入图片描述

官方对副本均衡的解释:

在这里插入图片描述

尝试使用「分区均衡」策略,尽可能将每个表的数据均分到各节点上,官方文档说明:

在这里插入图片描述
FE 参数配置:

在这里插入图片描述

官方文档链接:FE配置均衡策略

二、问题来了

按照上述文档进行操作后,出现问题:

在这里插入图片描述

排查后发现,分区均衡有个已知 bug,Github#doris#7213 (在高版本中修复)

在这里插入图片描述

大致意思是,如果某个节点上的 SSD 或者 HDD 磁盘没有数据,统计该盘分区副本数量的时候就置为 0,而这个 0 在后期处理的时候直接抛异常,后续操作无法继续进行 …

我看了下,我们目前 仅 HDD 盘上有数据,处理到 SSD 就出问题了。

在这里插入图片描述

:HDD 和 SSD 都是逻辑上的划分,并不一定是你实际使用的磁盘介质,比如你可能只使用了 SSD,Doris 在处理时还是两种都会处理。

1. 进一步验证

对比 debug log (需要手动开启)和 0.14 源码逻辑:

1)debug log:

在这里插入图片描述
2)均衡逻辑片段:

在这里插入图片描述

对比可以发现,确实是已知 bug 导致,它这里是要先把两种介质「待均衡的分区副本」全部找出来,然后再进行迁移。

处理 HDD 是没问题的,到了 SSD 抛了异常,导致整个过程没做任何迁移。

2. 解决

将 Doris 升级到更高版本(1.xx),升级了再考虑分区均衡策略。

Doris 升级至 1.1 之后,采用分区均衡策略,数据已均匀分布,如下:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柏油

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值