Перейти к основному содержимому
Перейти к основному содержимому

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

Соберите данные о подключении

Чтобы подключиться к ClickHouse с помощью HTTP(S), вам необходима следующая информация:

  • ХОСТ и ПОРТ: как правило, порт 8443 при использовании TLS или 8123 при отсутствии TLS.

  • ИМЯ БАЗЫ ДАННЫХ: по умолчанию существует база данных с именем default, используйте имя базы данных, к которой вы хотите подключиться.

  • ИМЯ ПОЛЬЗОВАТЕЛЯ и ПАРОЛЬ: по умолчанию имя пользователя default. Используйте имя пользователя, подходящее для вашего случая.

Данные для вашего сервиса ClickHouse Cloud доступны в консоли ClickHouse Cloud. Выберите сервис, к которому вы хотите подключиться, и нажмите Подключиться:

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

Если вы используете самоуправляемый ClickHouse, детали подключения устанавливаются вашим администратором ClickHouse.

Шаги

  1. Создайте тему Kafka github и вставьте набор данных Github.

Этот набор данных состоит из 200,000 строк, сосредоточенных на репозитории ClickHouse/ClickHouse.

  1. Убедитесь, что целевая таблица создана. Ниже мы используем базу данных по умолчанию.
  1. Скачайте и установите 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). Пользователи могут требовать другого поведения. См. здесь для получения дополнительной информации.
  1. Запустите Vector

По умолчанию необходим проверка работоспособности перед началом вставок в ClickHouse. Это обеспечивает возможность подключения и чтения схемы. Предварительно добавьте VECTOR_LOG=debug, чтобы получить дополнительные логи, которые могут быть полезны, если вы столкнетесь с проблемами.

  1. Подтвердите вставку данных.
count
200000