kafka-vector
Использование 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
Соберите ваши данные для подключения
Чтобы подключиться к ClickHouse с помощью HTTP(S), вам нужна следующая информация:
-
ХОСТ и ПОРТ: обычно порт 8443 при использовании TLS или 8123 при его отсутствии.
-
НАЗВАНИЕ БАЗЫ ДАННЫХ: по умолчанию есть база данных с именем
default
, используйте имя базы данных, к которой вы хотите подключиться. -
ИМЯ ПОЛЬЗОВАТЕЛЯ и ПАРОЛЬ: по умолчанию имя пользователя
default
. Используйте имя пользователя, подходящее для вашего случая использования.
Данные для вашей службы ClickHouse Cloud доступны в консоли ClickHouse Cloud. Выберите службу, к которой вы будете подключаться, и нажмите Подключиться:

Выберите HTTPS, и детали будут доступны в примере команды curl
.

Если вы используете self-managed ClickHouse, детали подключения задаются вашим администратором ClickHouse.
Шаги
- Создайте тему Kafka
github
и вставьте набор данных Github.
Этот набор данных состоит из 200,000 строк, сосредоточенных на репозитории ClickHouse/ClickHouse
.
- Убедитесь, что целевая таблица создана. Ниже мы используем базу данных по умолчанию.
- Скачайте и установите Vector. Создайте файл конфигурации
kafka.toml
и измените значения для ваших экземпляров Kafka и ClickHouse.
Несколько важных заметок по этой конфигурации и поведению Vector:
- Этот пример был протестирован с Confluent Cloud. Поэтому параметры безопасности
sasl.*
иssl.enabled
могут быть неуместны в случае self-managed. - Префикс протокола не требуется для параметра конфигурации
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 |