Использование 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 |