在 Apache Kudu 中,副本数是在创建表时通过什么方式指定的?Kudu 的副本机制具体通过哪些手段来保证数据安全?
考察说明
考查对 Kudu 副本配置方式及其数据安全机制的理解。
回答思路
- 【回答框架 1】Kudu 的副本数通过建表语句的 TBLPROPERTIES 中的 kudu.num_tablet_replicas 属性指定,例如 'kudu.num_tablet_replicas' = '3',该值必须是奇数且至少为 1。
- 【回答框架 2】副本机制通过 Raft 共识算法保障数据安全,每个 Tablet 的副本组成一个 Raft 组,写操作需多数派(如3副本中的2个)确认后才返回成功,从而保证强一致性和故障容错。
- 【回答框架 3】当多数副本确认写入后,数据即被认为持久化,即使少数副本宕机,也不会丢失已提交数据,并能自动选举新的 Leader 继续服务,确保高可用。
- 【回答框架 4】Kudu 还会通过后台的副本修复机制,将数据从存活副本复制到新副本,以恢复至期望的副本数,从而进一步保障数据冗余和安全。
- 【关键点 1】副本数在建表时通过 kudu.num_tablet_replicas 属性配置,且必须为奇数。
- 【关键点 2】Raft 共识要求多数派确认写操作,确保数据强一致和容错。
- 【关键点 3】多数派存活时,Kudu 可自动选主并继续提供服务,数据不丢失。
- 【易错点 1】不能将副本机制等同于保证业务幂等,幂等还需唯一标识等额外措施。
- 【易错点 2】副本数配置为偶数时,Kudu 会拒绝创建表,因为无法形成多数派。