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

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. Выберите службу, к которой вы будете подключаться, и нажмите Подключиться:

Кнопка подключения к службе ClickHouse Cloud

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

Детали подключения ClickHouse Cloud через HTTPS

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

Шаги

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

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

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

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

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