美文网首页
ClickHouse和Zookeeper

ClickHouse和Zookeeper

作者: 淡淡的小番茄 | 来源:发表于2022-06-06 19:50 被阅读0次

背景

ClickHose使用Zookeeper的地方还是比较多的,像副本leader的选举、副本表写入的同步,以及整个集群、表的meta信息都是通过Zookeeper来实现的。由于本身Zookeeper的机制尽量保证最终一致性(CP),写操作都是通过leader节点来完成的,本身存在单点性能问题。随着集群规模的增大,Zookeeper的压力也会越来越大,CH是支持多ZK集群的,一般来说说我们不需要这么做,根据官方给的经验:单zk集群完全可以支持300台机器的CH集群规模。当然,如果必要,可以给ZK配置高性能的磁盘,比如:ssd盘。依赖那么多,必然会有出问题的时候,今天给大家分享下最近遇到的一些问题。

问题1::Exception: Existing table metadata in ZooKeeper differs in sorting key expression. Stored in ZooKeeper:

详情如下:

问题2:Replica xxx-01-01 already exists..

详情如下:

问题3:Cannot allocate block number in ZooKeeper: Coordination::Exception: No node, path:

详情如下:

问题4:Cannot allocate block number in ZooKeeper: Coordination::Exception: No node, path:

此类问题一般都是一些不合规操作或者环境稳定性问题导致的,比如:

1、ZK相关的错误

ZK的配置或者状态异常(裂变等),或者压根就是配置错误。

2、环境引起的

比如:删除表之后,默认CH不会立即删除ZK中的meta信息,是无一致性保证的,如果异步删的时候,网络不稳定或者zk服务不正常,就会删除失败,导致表的meta信息在zk中残留。

对于ZK的问题,做相关的恢复操作即可,如果由于zk压力大引起,建议给zk所在的机器配置一块好一些的磁盘。如果你们系统对数据的完整性要求不是那么高,也可以对zk做如下配置,开启写缓存的操作。

forceSync=no

此选项一般来说是不建议开启的,请慎重选择。

问题修复总结

ZK信息错乱,不太好修复。如果此时你还能连上CH,那么可以将数据进行备份到新表。然后修复ZK中的表META信息,数据备份后就可以直接删除表,然后重新建。参考命令如下:

--备份数据

drop table t_xx;

SYSTEM DROP REPLICA 'cluster01-01-01' FROM ZKPATH '/clickhouse/tables/01-01/ t_xx ';

create table t_xx...

如果连CH都启动不起来了,那么需要先将CH恢复,让能正常启动。

相关文章

网友评论

      本文标题:ClickHouse和Zookeeper

      本文链接:https://www.haomeiwen.com/subject/plqfprtx.html