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