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

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

Шаги

  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