Использование Vector с Kafka и ClickHouse
Использование Vector с Kafka и ClickHouse
Vector — это независимый от поставщика конвейер данных с возможностью чтения из Kafka и отправки событий в ClickHouse.
Руководство по началу работы с Vector и ClickHouse сосредоточено на использовании журнала и чтении событий из файла. Мы используем пример набора данных на Github с событиями, хранящимися в теме Kafka.
Vector использует источники для получения данных через модель push или pull. Сливы в то же время предоставляют назначение для событий. Поэтому мы используем источник Kafka и слив ClickHouse. Обратите внимание, что, хотя Kafka поддерживается как слив, источник ClickHouse недоступен. В результате Vector не подходит для пользователей, желающих передать данные в Kafka из ClickHouse.
Vector также поддерживает преобразование данных. Это выходит за рамки данного руководства. Пользователь может обратиться к документации Vector, если ему это необходимо для своего набора данных.
Обратите внимание, что текущая реализация слива ClickHouse использует HTTP интерфейс. На данный момент слив ClickHouse не поддерживает использование схемы JSON. Данные должны публиковаться в Kafka в простом формате JSON или в виде строк.
Лицензия
Vector распространяется по лицензии MPL-2.0
Соберите данные о подключении
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.
Шаги
- Создайте тему 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"
гарантирует, что сообщение передается в слив ClickHouse как один объект JSON. Если обрабатывать сообщения как строки и использовать значение по умолчаниюbytes
, содержимое сообщения будет добавлено в полеmessage
. В большинстве случаев это потребует обработки в ClickHouse, как описано в руководстве по началу работы с Vector. - Vector добавляет несколько полей к сообщениям. В нашем примере мы игнорируем эти поля в сливе ClickHouse через параметр конфигурации
skip_unknown_fields = true
. Это игнорирует поля, которые не входят в схему целевой таблицы. Не стесняйтесь настраивать свою схему, чтобы убедиться, что такие метаполя, как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 |