常见ClickHouse集群部署架构

原文链接????:https://www.jianshu.com/p/f1fa7e5cb67f

ClickHouse不同于Elasticsearch、HDFS这类主从架构的分布式系统,它采用多主(无中心)架构,集群中的每个节点角色对等,客户端访问任意一个节点都能得到相同的效果。

ClickHouse借助分片将数据进行横向切分,而分片依赖集群,每个集群由1到多个分片组成,每个分片对应了CH的1个服务节点;分片数量的上限取决与节点数量(1个分片只能对应1个服务节点)。

但是ClickHouse并不像其他分布式系统那样,拥有高度自动化的分片功能;CH提供了本地表与分布式表的概念;一张本地表等同于一个数据分片。而分布式表是张逻辑表,本身不存储任何数据,它是本地表的访问代理,其作用类似分库中间件。借助分布式表,能够代理访问多个数据分片,从而实现分布式查询。当然,也可以在应用层实现数据分发。

ClickHouse同时支持数据副本,其副本概念与Elasticsearch类似,但在CH中分片其实是一种逻辑概念,其物理承载是由副本承担的。

ClickHouse的数据副本一般通过ReplicatedMergeTree复制表系列引擎实现,副本之间借助ZooKeeper实现数据的一致性。此外也可通过分布式表负责同时进行分片和副本的数据写入工作。

以四节点实现多分片和双副本为例:

方案一

(上图中shard作为主副本)
在每个节点创建一个数据表,作为一个数据分片,使用ReplicatedMergeTree表引擎实现数据副本,而分布表作为数据写入和查询的入口。
这是最常见的集群实现方式。

方案二

在每个节点创建一个数据表,作为一个数据分片,分布表同时负责分片和副本的数据写入工作。

这种实现方案下,不需要使用复制表,但分布表节点需要同时负责分片和副本的数据写入工作,它很有可能称为写入的单点瓶颈。

方案三

在每个节点创建一个数据表,作为一个数据分片,同时创建两个分布表,每个分布表只纳管一半的数据。

副本的实现仍需要借助ReplicatedMergeTree类表引擎。

方案四

在每个节点创建两个数据表,同一数据分片的两个副本位于不同节点上,每个分布式表纳管一般的数据。

这种方案可以在更少的节点上实现数据分布与冗余,但是部署上略显繁琐。

  • CH的分片与副本功能完全靠配置文件实现,无法自动管理,所以当集群规模较大时,集群运维成本较高

  • 数据副本依赖ZooKeeper实现同步,当数据量较大时,ZooKeeper可能会称为瓶颈

  • 如果资源充足,建议使用方案一,主副本和副副本位于不同节点,以更好地实现读写分离与负载均衡

  • 如果资源不够充足,可以使用方案四,每个节点承载两个副本,但部署方式上略复杂

识别下方二维码,回复“资料全集”,即可获得下载地址。

参考:《ClickHouse原理解析与应用实践》

点击仓库(ClickHouse)是一个开源的列式数据库管理系统,用于处理大规模数据集的实时分析。部署ClickHouse集群涉及以下步骤: 1. 确定集群规模:确定需要多少个节点和副本以及数据分片的数量。这取决于您的数据量和性能需求。 2. 安装ClickHouse软件:在每个节点上安装ClickHouse软件。您可以按照官方文档提供的说明进行安装。确保所有节点上的ClickHouse版本相同。 3. 配置ClickHouse节点:在每个节点上编辑ClickHouse配置文件以配置节点角色和集群连接信息。您需要指定节点的角色(例如,主节点、副本节点、分片节点)以及集群中其他节点的IP地址和端口号。 4. 启动ClickHouse服务:在每个节点上启动ClickHouse服务。您可以使用命令行工具或系统服务管理器来启动服务。 5. 创建分片和副本:使用ClickHouse的管理工具或命令行客户端创建分片和副本。您可以指定分片的数量和副本的位置以实现数据的分布和冗余。 6. 测试集群连接:使用ClickHouse的命令行客户端或其他客户端工具连接到集群,并执行一些查询以确保集群正常工作。 7. 监控和维护:设置适当的监控和日志记录以跟踪集群的性能和状态。定期进行维护任务,如备份和数据清理。 请注意,ClickHouse集群部署可能涉及更多的细节和配置选项,具体取决于您的需求和环境。建议参考ClickHouse的官方文档和社区资源以获取更详细的指导和最佳实践。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值