使用 Vector 与 Kafka 和 ClickHouse
使用 Vector 与 Kafka 和 ClickHouse
Vector 是一个与供应商无关的数据管道,能够从 Kafka 读取并将事件发送到 ClickHouse。
有关 Vector 与 ClickHouse 的 入门指南 重点介绍了日志使用案例以及从文件中读取事件。我们使用了 Github 示例数据集,该数据集的事件保存在 Kafka 主题中。
Vector 利用 sources 通过推送或拉取模型检索数据。与此同时,Sinks 则为事件提供目的地。因此,我们利用 Kafka 源和 ClickHouse 接收器。请注意,虽然 Kafka 被支持作为接收器,但 ClickHouse 源并不提供。因此,Vector 不适合希望从 ClickHouse 向 Kafka 传输数据的用户。
Vector 还支持数据的 transformation。这超出了本指南的范围。如需处理数据集上的此需求,用户可参考 Vector 文档。
请注意,当前实现的 ClickHouse 接收器利用 HTTP 接口。目前,ClickHouse 接收器不支持使用 JSON 架构。数据必须以纯 JSON 格式或字符串的形式发布到 Kafka。
许可证
Vector 根据 MPL-2.0 License 分发。
收集连接信息
To connect to ClickHouse with HTTP(S) you need this information:
-
The HOST and PORT: typically, the port is 8443 when using TLS or 8123 when not using TLS.
-
The DATABASE NAME: out of the box, there is a database named
default
, use the name of the database that you want to connect to. -
The USERNAME and PASSWORD: out of the box, the username is
default
. Use the username appropriate for your use case.
The details for your ClickHouse Cloud service are available in the ClickHouse Cloud console. Select the service that you will connect to and click Connect:

Choose HTTPS, and the details are available in an example curl
command.

If you are using self-managed ClickHouse, the connection details are set by your ClickHouse administrator.
ClickHouseにHTTP(S)で接続するには、次の情報が必要です:
-
HOSTとPORT: 通常、ポートはTLSを使用する場合は8443、TLSを使用しない場合は8123です。
-
DATABASE NAME: デフォルトでは、
default
という名前のデータベースがあります。接続したいデータベースの名前を使用してください。 -
USERNAMEとPASSWORD: デフォルトでは、ユーザー名は
default
です。ご利用のケースに適したユーザー名を使用してください。
ClickHouse Cloudサービスの詳細はClickHouse Cloudコンソールで確認できます。接続するサービスを選択し、Connectをクリックします:

HTTPSを選択すると、詳細が例のcurl
コマンドで提供されます。

セルフマネージドのClickHouseを使用している場合、接続の詳細はClickHouseの管理者によって設定されます。
步骤
- 创建 Kafka
github
主题并插入 Github 数据集。
此数据集包含 200,000 行,集中于 ClickHouse/ClickHouse
存储库。
- 确保目标表已创建。以下我们使用默认数据库。
- 下载并安装 Vector。创建一个
kafka.toml
配置文件并修改您 Kafka 和 ClickHouse 实例的值。
关于此配置和 Vector 行为的一些重要注意事项:
- 该示例已在 Confluent Cloud 上进行测试。因此,
sasl.*
和ssl.enabled
安全选项可能不适合自管理的情况。 - 对于配置参数
bootstrap_servers
,不需要协议前缀,例如pkc-2396y.us-east-1.aws.confluent.cloud:9092
。 - 源参数
decoding.codec = "json"
确保消息作为单个 JSON 对象传递到 ClickHouse 接收器。如果将消息处理为字符串并使用默认的bytes
值,消息的内容将附加到字段message
。在大多数情况下,这将需要在 ClickHouse 中进行处理,如 Vector 入门指南 所述。 - Vector 为消息添加了一些字段。在本示例中,我们通过配置参数
skip_unknown_fields = true
在 ClickHouse 接收器中忽略这些字段。这忽略不属于目标表架构的字段。请随意调整您的架构,以确保这些元字段如offset
被添加。 - 注意接收器如何通过参数
inputs
引用事件源。 - 请注意 ClickHouse 接收器的行为,如 此处所述。为了优化吞吐量,用户可能希望调整
buffer.max_events
、batch.timeout_secs
和batch.max_bytes
参数。根据 ClickHouse 的 建议,单个批次中的事件数量应考虑最低值 1000。对于一致的高吞吐量用例,用户可能会增加参数buffer.max_events
。更多可变的吞吐量可能需要更改参数batch.timeout_secs
。 - 参数
auto_offset_reset = "smallest"
强制 Kafka 源从主题的开始处开始,从而确保我们消费步骤 (1) 中发布的消息。用户可能需要不同的行为。有关更多细节,请参见 这里。
- 启动 Vector
默认情况下,在插入 ClickHouse 之前需要进行 健康检查。这确保可以建立连接并读取架构。如遇问题,请在前面加上 VECTOR_LOG=debug
以获取更多日志信息,这可能会很有帮助。
- 确认数据的插入。
count |
---|
200000 |