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

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

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

To connect to ClickHouse with HTTP(S) you need this information:

  • The HOST and PORT: typically, the port is 8443 when using TLS or 8123 when not using TLS.

  • The DATABASE NAME: out of the box, there is a database named default, use the name of the database that you want to connect to.

  • The USERNAME and PASSWORD: out of the box, the username is default. Use the username appropriate for your use case.

The details for your ClickHouse Cloud service are available in the ClickHouse Cloud console. Select the service that you will connect to and click Connect:

Choose HTTPS, and the details are available in an example curl command.

If you are using self-managed ClickHouse, the connection details are set by your ClickHouse administrator.

Шаги

  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