Поставка данных из очереди YDS в ClickHouse®
Важно
Этот документ не применим для пользователей Yandex Cloud в регионе Казахстан. См. полный перечень поддерживаемых эндпоинтов в Data Transfer.
С помощью сервиса Data Transfer вы можете поставлять данные из потока Data Streams в сервис Managed Service for ClickHouse®.
Чтобы перенести данные:
- Подготовьте поток данных Data Streams.
- Подготовьте и активируйте трансфер.
- Проверьте работоспособность трансфера.
Если созданные ресурсы вам больше не нужны, удалите их.
Необходимые платные ресурсы
-
База данных Managed Service for YDB (см. тарифы Managed Service for YDB). Стоимость зависит от режима использования:
- Для бессерверного режима — оплачиваются операции с данными, объем хранимых данных и резервных копий.
- Для режима с выделенными инстансами — оплачивается использование выделенных БД вычислительных ресурсов, объем хранилища и резервные копии.
-
Сервис Data Streams (см. тарифы Data Streams). Стоимость зависит от режима тарификации:
- По выделенным ресурсам — оплачивается фиксированная почасовая ставка за установленный лимит пропускной способности и срок хранения сообщений, а также дополнительно количество единиц фактически записанных данных.
- По фактическому использованию (On-demand) — оплачиваются выполненные операции записи и чтения данных, объем считанных/записанных данных, а также объем фактически используемого хранилища для сообщений, по которым не истек срок хранения.
-
Кластер Managed Service for ClickHouse®: использование выделенных хостам вычислительных ресурсов, объем хранилища и резервных копий (см. тарифы Managed Service for ClickHouse®).
-
Публичные IP-адреса, если для хостов кластера включен публичный доступ (см. тарифы Virtual Private Cloud).
-
Каждый трансфер: использование вычислительных ресурсов и количество переданных строк данных (см. тарифы Data Transfer).
Перед началом работы
Подготовьте инфраструктуру:
-
Создайте базу данных Managed Service for YDB любой подходящей конфигурации.
-
Создайте кластер Managed Service for ClickHouse® любой подходящей конфигурации.
-
Создайте эндпоинт для приемника:
-
Тип базы данных —
ClickHouse. -
Параметры эндпоинта:
-
Настройки подключения:
-
Тип подключения —
Managed кластер.- Managed кластер — выберите кластер-приемник из списка.
-
База данных — укажите имя базы данных.
-
Пользователь и Пароль — укажите имя и пароль пользователя с доступом к базе, например, владельца базы данных.
-
-
-
-
Если у вас еще нет Terraform, установите его.
-
Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.
-
Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.
-
Скачайте в ту же рабочую директорию файл конфигурации data-transfer-yds-mch.tf
.В этом файле описаны:
- база данных Managed Service for YDB;
- сервисный аккаунт с ролью
yds.editor; - сеть;
- подсеть;
- группа безопасности и правила, необходимые для подключения к кластеру Managed Service for ClickHouse® из интернета;
- кластер-приемник Managed Service for ClickHouse®;
- эндпоинт для приемника;
- трансфер.
-
Укажите в файле
data-transfer-yds-mch.tf:folder_id— идентификатор каталога, в котором будут созданы ресурсы.sa_name— имя сервисного аккаунта для использования в эндпоинтах.source_db_name— имя базы данных Managed Service for YDB.target_db_name— имя базы данных ClickHouse®.target_userиtarget_password— имя и пароль пользователя-владельца базы данных ClickHouse®.transfer_enabled– значение0, чтобы не создавать трансфер до создания эндпоинта-источника вручную.
-
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Подготовьте поток данных Data Streams
- Создайте поток данных Data Streams.
- Отправьте в поток тестовые данные. В качестве сообщения используйте данные от сенсоров автомобиля в формате JSON:
{
"device_id":"iv9a94th6rzt********",
"datetime":"2022-06-05 17:27:00",
"latitude":55.70329032,
"longitude":37.65472196,
"altitude":427.5,
"speed":0,
"battery_voltage":"23.5",
"cabin_temperature":17,
"fuel_level":null
}
Подготовьте и активируйте трансфер
Примечание
Для ускорения поставки большого объема данных используйте специальные настройки эндпоинтов.
-
Создайте эндпоинт для источника:
-
Тип базы данных —
Yandex Data Streams. -
Параметры эндпоинта:
-
Настройки подключения:
- База данных — выберите базу данных Managed Service for YDB из списка.
- Поток — укажите имя потока Data Streams.
- Сервисный аккаунт — выберите или создайте сервисный аккаунт с ролью
yds.editor.
-
Расширенные настройки:
- Правила конвертации —
JSON. - Схема данных – Вы можете задать схему двумя способами:
-
Список полей.Задайте список полей топика вручную:
Имя Тип Ключ device_idSTRINGДа datetimeDATETIMElatitudeDOUBLElongitudeDOUBLEaltitudeDOUBLEspeedDOUBLEbattery_voltageANYcabin_temperatureDOUBLEfuel_levelANY -
JSON-спецификация.Создайте и загрузите файл схемы данных в формате JSON
json_schema.json:json_schema.json
[ { "name": "device_id", "type": "string", "key": true }, { "name": "datetime", "type": "datetime" }, { "name": "latitude", "type": "double" }, { "name": "longitude", "type": "double" }, { "name": "altitude", "type": "double" }, { "name": "speed", "type": "double" }, { "name": "battery_voltage", "type": "any" }, { "name": "cabin_temperature", "type": "double" }, { "name": "fuel_level", "type": "any" } ]
-
- Правила конвертации —
-
-
-
Создайте трансфер:
ВручнуюTerraform- Создайте трансфер типа Репликация, использующий созданные эндпоинты.
- Активируйте его.
-
Укажите в файле
data-transfer-yds-mch.tfпеременные:source_endpoint_id— значение идентификатора эндпоинта для источника;transfer_enabled– значение1для создания трансфера.
-
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
Трансфер активируется автоматически после создания.
-
Проверьте работоспособность трансфера
-
Дождитесь перехода трансфера в статус Реплицируется.
-
Отправьте в поток Data Streams новое сообщение:
{ "device_id":"rhibbh3y08qm********", "datetime":"2022-06-06 09:49:54", "latitude":55.71294467, "longitude":37.66542005, "altitude":429.13, "speed":55.5, "battery_voltage":null, "cabin_temperature":18, "fuel_level":32 } -
Убедитесь, что в базу данных кластера Managed Service for ClickHouse® перенеслись данные из потока Data Streams:
- Подключитесь к кластеру-приемнику Managed Service for ClickHouse®.
- Проверьте, что в базе ClickHouse® существует таблица с именем созданного потока Data Streams с теми же колонками, что и схема данных в эндпоинте-источнике, и отправленными тестовыми данными.
Удалите созданные ресурсы
Примечание
Перед тем как удалить созданные ресурсы, деактивируйте трансфер.
Чтобы снизить потребление ресурсов, которые вам не нужны, удалите их:
-
Удалите ресурсы в зависимости от способа их создания:
ВручнуюTerraform-
В терминале перейдите в директорию с планом инфраструктуры.
Важно
Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.
-
Удалите ресурсы:
-
Выполните команду:
terraform destroy -
Подтвердите удаление ресурсов и дождитесь завершения операции.
Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.
-
-
-
Удалите эндпоинт для источника.
ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc