Использование Vector с Kafka и ClickHouse
Использование Vector с Kafka и ClickHouse
Vector — это универсальный конвейер данных, способный считывать данные из Kafka и отправлять события в ClickHouse.
Руководство по началу работы с Vector и ClickHouse сосредоточено на использовании логов и считывании событий из файла. Мы используем пример набора данных из Github, содержащий события на Kafka-теме.
Vector использует источники для получения данных через модель push или pull. В то же время синхронизация предоставляет назначение для событий. Поэтому мы используем источник Kafka и синхронизацию ClickHouse. Обратите внимание, что хотя Kafka поддерживается в качестве синхронизации, источник ClickHouse недоступен. Следовательно, Vector не подходит для пользователей, желающих передавать данные из ClickHouse в Kafka.
Vector также поддерживает преобразование данных. Это выходит за рамки данного руководства. Пользователю рекомендуется обратиться к документации Vector, если ему это необходимо для их набора данных.
Обратите внимание, что текущая реализация синхронизации ClickHouse использует HTTP интерфейс. В настоящее время синхронизация ClickHouse не поддерживает использование JSON-схемы. Данные должны быть отправлены в Kafka в простом формате JSON или в виде строк.
Лицензия
Vector распространяется по лицензии MPL-2.0
Соберите свои данные для подключения
Чтобы подключиться к ClickHouse с помощью HTTP(S), вам необходима следующая информация:
-
ХОСТ и ПОРТ: как правило, порт 8443 при использовании TLS или 8123 при отсутствии TLS.
-
ИМЯ БАЗЫ ДАННЫХ: по умолчанию существует база данных с именем
default
, используйте имя базы данных, к которой вы хотите подключиться. -
ИМЯ ПОЛЬЗОВАТЕЛЯ и ПАРОЛЬ: по умолчанию имя пользователя
default
. Используйте имя пользователя, подходящее для вашего случая.
Данные для вашего сервиса ClickHouse Cloud доступны в консоли ClickHouse Cloud. Выберите сервис, к которому вы хотите подключиться, и нажмите Подключиться:

Выберите 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"
гарантирует, что сообщение передается в синхронизацию 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 |