前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大数据架构系列:Clickhouse + Kafka 的方案组合

大数据架构系列:Clickhouse + Kafka 的方案组合

原创
作者头像
jhonye
修改2022-11-21 19:18:43
1.4K0
修改2022-11-21 19:18:43
举报
文章被收录于专栏:随手写个文章随手写个文章

普通方案

如图1,是大家常见的一种用法,所有CH节点参与分发数据的原因是因为大家想把唯一Key相同的数据分发到同一个节点,好做一些SQL查询。

如图2,也是常见的一种做法,就是数据存储在哪个节点无所谓,一般只算SUM、COUNT等聚合函数。如果业务可以使用该方案,非常OK,基本上无需考虑新方案了。

a. 优点:

  • 所有节点都消费Kakfa,消费能力强。
  • 使用成本相对较低,用户自己搞定。
  • 图2 方案 也是推荐方案的一种。

b. 缺点:

  • 消费、写入、查询都在同一个节点,影响查询。
  • 集群基础负载高,线程间的上下文切换多。
  • 图1 方案受限于节点个数,如果节点超过100个,数据交换和MergeTree的小文件合并能吃掉你大部分CPU使用率。
  • 图1 方案你如果还想用多副本,你的ZK会‘爆炸’,原地起飞。

优化方案

如图3,使用几个高性能消费Kafka数据,然后分发到所有其他节点,其他节点只有LocalTable的写压力。测试后发现几个高性能节点来消费数据是OK的。

如图4,在图3的基础上支持多副本,集群规模不是特别大的情况下,zk的压力还是扛的住的。

a. 优点

  • 有点‘读写分离’的意思,查询集群的基础负载会小很多,有利于提供稳定的查询服务。
  • 查询集群可以直接突破100个节点,容易水平扩展。
  • 消费Kafka集群的节点个数也可以根据上游的数据量进行收缩,对数据写入影响较小。
  • 节点的都在干自己擅长的事情,效率更高。
  • 在数据Hash的情况下,可以支持多副本表,且节点和单副本不会差太多,主要还是看ZK。

b. 缺点

  • 需要独立配置几台Kafka 消费节点。
  • 如果数据不需要Hash的话,当前方案比图2确实多了一些网络传输,数据合并压力。

三、参数配置

配置参数

默认值

推荐值

参数说明

kafka_thread_per_consumer

0

1

一个Consumer 对应一条线程,再大对数据消费意义不大

kafka_num_consumers

1

CPU核数/2

当前Kafka Engine表启动的Consumer数量,master分支最大值已经是和机器物理CPU核数一致了,主流分支还是最大16个。

kafka_max_block_size

65536

1048576

每次从Kafka端拉取一批的最大消息数量

kafka_skip_broken_messages

0

10

每批数据允许和Schema不匹配的数据条数,一般情况下用户都有脏数据。

四、结论

在需要使用数据Hash的场景时,我们推荐使用图3、图4方案,降低查询集群的压力,降低长期的运维成本。

参考社区PR:https://github.com/ClickHouse/ClickHouse/issues/26640

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 普通方案
  • 优化方案
  • 三、参数配置
  • 四、结论
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档