使用 MSK Connect 实现 ClickHouse 的实时数据摄取

使用 MSK Connect 实现 ClickHouse 的实时数据摄取

💡 原文中文,约6900字,阅读约需17分钟。
📝

内容提要

ClickHouse是一款用于大规模实时数据分析的列式数据库管理系统,本文介绍了通过MSK、MSK Connect ClickHouse Kafka Connector和Glue Schema Registry搭建全托管无服务器架构的实时数据摄取能力,并通过ClickHouse与S3的集成降低海量实时数据存储成本。

🔎

延伸解读

全托管架构的运维简化与代价

文章采用MSK Serverless、MSK Connect和Glue Schema Registry等托管服务,显著降低了Kafka集群、连接器及Schema管理的运维负担。但托管并非零配置:仍需手动创建VPC端点、配置Worker参数、编写IAM策略,并确保ClickHouse安全组开放必要端口。因此,该方案适合希望减少底层运维但具备一定云网络与权限管理能力的团队。

Schema注册与Avro格式的集成要点

数据生产者需将Avro Schema注册到Glue Schema Registry,并在消息中携带Schema信息。消费端则需在ClickHouse Kafka Connector中额外添加schema-registry-kafkaconnect-converter等jar包,并在Worker Configuration中正确设置value.converter.endpoint为Glue Schema Registry的VPC端点。这一步骤是打通端到端流程的关键,若配置不当可能导致数据无法解析或写入失败。

存储成本优化与S3集成

ClickHouse通过storage_policy配置将数据持久化到S3,从而降低海量实时数据的存储成本。文章示例中建表时指定了s3_main存储策略,这要求提前在ClickHouse中配置好S3存储策略。该方式适合数据量大、对存储成本敏感的场景,但需注意S3的访问延迟可能影响查询性能,需结合实际负载评估。

部署难度与适用场景评估

文章指出整体端到端部署和运维具有一定难度,涉及EC2上的ClickHouse集群、MSK Serverless、MSK Connect、Glue Schema Registry以及IAM权限等多个组件。该方案适用于广告推荐、金融交易、网络监控等对实时性要求高的场景。若团队缺乏Kafka和ClickHouse运维经验,可考虑Marketplace上的ClickHouse Cloud或ByteHouse等托管版本以进一步降低复杂度。

❓

Q&A

ClickHouse 是什么?它适合哪些场景?

ClickHouse 是一个用于联机分析(OLAP)的列式数据库管理系统,通过列式存储、向量化执行、压缩编码、分布式查询处理等手段实现出色的写和查询吞吐能力、低延迟、高可扩展性。适用于大规模实时数据分析、事件日志处理、在线分析等场景。

如何搭建基于 MSK 和 ClickHouse 的实时数据摄取架构?

数据生产者将 schema(Apache Avro 格式)注册到 AWS Glue Schema Registry,然后将带有 schema 信息的数据发送到 Amazon MSK。在消费端,使用支持 Glue Schema Registry 和 Avro 的 ClickHouse Kafka Connector,部署在 Amazon MSK Connect 上,从 MSK 批量拉取消息并插入到 ClickHouse 中,ClickHouse 使用 S3 作为持久存储。

ClickHouse 如何部署?有哪些注意事项?

可以根据官方文档将 ClickHouse 以单机或集群方式部署到 EC2 上,并将数据存储到 S3 上。需要注意 ClickHouse 需要的端口较多,需要在安全组中对应地打开。也可以从 Marketplace 订阅 ClickHouse Cloud 或 ByteHouse 等托管版本,或使用 ClickHouse Cluster on AWS 的一键部署方案。

MSK Connect 的 Worker Configuration 需要配置哪些关键参数?

需要配置 value.converter.endpoint 为 Glue Schema Registry 的 VPCE,其他配置包括 offset.storage.partitions=5、status.storage.partitions=2、key.converter=org.apache.kafka.connect.storage.StringConverter、value.converter.schemas.enable=true、value.converter=com.amazonaws.services.schemaregistry.kafkaconnect.AWSKafkaAvroConverter、value.converter.region=us-west-2、value.converter.registry.name=default-registry、value.converter.schemaAutoRegistrationEnabled=true、value.converter.compatibility=BACKWARD、value.converter.avroRecordType=GENERIC_RECORD 等。

如何构建支持 Glue Schema Registry 的 ClickHouse Kafka Connector?

从 https://github.com/awslabs/aws-glue-schema-registry 下载源码,执行 mvn clean install 得到 schema-registry-kafkaconnect-converter-1.1.18.jar。下载 mysql jdbc,解压 ClickHouse Kafka Connector,添加上述 jar,然后再次打包。上传到 S3 并创建 MSK Connect Plugin。

如何测试和验证实时数据摄取流程?

使用 ClickStream Kafka Producer 进行测试。创建可连通 MSK Serverless 和 ClickHouse 的 EC2,附加必要的 IAM Policy。在 Kafka Producer 上创建 Topic 和 ClickHouse 表,创建 MSK Connect 的 Execution Role 并添加 Glue Schema Registry 和 MSK Serverless 权限。配置并启动 MSK Connect,然后运行 ClickStream Producer 生产数据。观察 CloudWatch Logs、ClickHouse 和 S3 路径,确认数据成功写入。通过 MSK Serverless 指标可看到数据生产和消费几乎没有延迟。

使用 MSK Connect 和 Glue Schema Registry 有哪些好处?

通过 MSK、MSK Connect 以及 Glue Schema Registry 等托管服务,可以在很大程度上减轻运维的复杂度,使得用户能够更轻松地发掘数据的价值。整体端到端的部署和运维仍有一定难度,但托管服务降低了复杂度。

🏷️

标签

➡️

继续阅读