Doris 副本修复流程是怎样的?

提问者:帅平 问题分类:面试刷题
Doris 副本修复流程是怎样的?
1 个回答
宁愿短发披肩
宁愿短发披肩
在Doris中,一个 Tablet 的多个副本,可能因为某些情况导致状态不一致。Doris 会尝试自动修复这些状态不一致的副本,让集群尽快从错误状态中恢复。他的修复流程如下:
1、找到一个可用的 BE 及副本存放路径,作为我们副本Clone的目标节点(这个目标 BE 要有可以使用执行 Clone 任务的 Solt)
首先这个 BE 是要 Alive 的
应该将现有副本的 BE 节点排除在外,因为同一个 BE 只能有一个副本。
选择一个 proper tag BE,在副本丢失的情况下,我们要选择一个有副本丢失的 tag,根据副本分布情况,如果没有 副本丢失 tag 的,这种应该抛出异常,为了删除多余的副本,这时候需要找出一个多余副本的标签
2、找到一个可以用来 Clone 副本的合适的路径,这里要考虑磁盘容量和使用百分比,目标是要找到一个负载(ClusterLoadStatistics(CLS))相对低的路径,这里TabletScheduler 会每隔 20s 更新一次 CLS。
3、找到一个适合的副本源,这个副本应该是健康的,源副本所在的BE有可用的Clone solt。
4、向目标 BE 发送克隆任务,目标 BE 提交 Clone task 任务
1、判断 tablet 副本都否存在,如果不存在开始 Clone 一个新的 tablet
2、向源 BE 发送一个创建Snapshot的请求,这里源 BE 之所以要创建Snapshot,是因为方式在 clone 修复的时候,这个时候有数据写导致Clone 失败,通过创建快照来避免这个问题。
3、源 BE 检查 tablet 状态及版本等是否正常
4、如果源 BE 的tablet 副本状态、版本等都是正常的,执行创建Snapshot,并返回
5、目标 BE 从源 BE 下载刚才创建的Snapshot到本地,完成副本恢复
发布于:1个月前 (02-08) IP属地:四川省
我来回答