Поставка данных из Yandex Managed Service for Apache Kafka® с помощью Yandex Data Transfer
Вы можете настроить перенос данных из топика Yandex Managed Service for Apache Kafka® в Greenplum®/Apache Cloudberry™ в сервисе Yandex MPP Analytics for PostgreSQL с помощью Yandex Data Transfer. Для этого:
- Подготовьте инфраструктуру.
- Подготовьте тестовые данные.
- Подготовьте и активируйте трансфер.
- Проверьте работоспособность трансфера.
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVEилиTRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
- Кластер Managed Service for Apache Kafka®: использование выделенных хостам вычислительных ресурсов и объем хранилища (тарифы Managed Service for Apache Kafka®).
- Кластер Yandex MPP Analytics for PostgreSQL: использование выделенных хостам вычислительных ресурсов, объем хранилища и резервных копий (тарифы Yandex MPP Analytics for PostgreSQL).
- Публичные IP-адреса, если для хостов кластеров включен публичный доступ (тарифы Yandex Virtual Private Cloud).
Подготовьте инфраструктуру
-
Подготовьте инфраструктуру поставки данных:
ВручнуюTerraformПримечание
Публичный доступ к хостам кластера нужен, если вы планируете подключаться к кластеру через интернет. Этот вариант подключения более простой, и его рекомендуется использовать для прохождения руководства. К хостам без публичного доступа тоже можно подключиться, но только с виртуальных машин Yandex Cloud, расположенных в той же облачной сети, что и кластер.
-
Создайте кластер-источник Yandex Managed Service for Apache Kafka® любой подходящей конфигурации c хостами в публичном доступе.
-
Создайте в кластере-источнике топик с именем
sensors. -
Создайте в кластере-источнике пользователя с именем
mkf-userи правами доступа к созданному топикуACCESS_ROLE_PRODUCERиACCESS_ROLE_CONSUMER. -
Создайте кластер-приемник Greenplum® любой подходящей конфигурации с именем пользователя-администратора
userи хостами в публичном доступе. -
Убедитесь, что группы безопасности кластеров настроены правильно и допускают подключение к ним:
-
Если у вас еще нет Terraform, установите его.
-
Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.
-
Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.
-
Скачайте в ту же рабочую директорию файл конфигурации kafka-greenplum.tf
.В этом файле описаны:
- сети и подсети для размещения кластеров;
- группы безопасности для подключения к кластерам;
- кластер-источник Managed Service for Apache Kafka®;
- кластер-приемник Greenplum® в сервисе Yandex MPP Analytics for PostgreSQL;
- эндпоинт Apache Kafka®;
- трансфер.
-
Укажите в файле
kafka-greenplum.tfпароли пользователя и версии Apache Kafka® и Greenplum®. -
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
-
-
Установите утилиты:
-
kafkacat
— для чтения и записи данных в топики Apache Kafka®.sudo apt update && sudo apt install --yes kafkacatУбедитесь, что можете с ее помощью подключиться к кластеру-источнику Managed Service for Apache Kafka® через SSL.
-
jq
— для потоковой обработки JSON-файлов.sudo apt update && sudo apt-get install --yes jq
-
Подготовьте тестовые данные
Пусть в качестве сообщения в топик Apache Kafka® sensors кластера-источника поступают данные от сенсоров автомобиля в формате JSON.
Создайте на рабочей машине файл sample.json с тестовыми данными:
sample.json
{
"device_id": "iv9a94th6rzt********",
"datetime": "2020-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
}
Подготовьте и активируйте трансфер
-
Создайте эндпоинт для приемника Greenplum®:
- Направление —
Приёмник. - Укажите имя эндпоинта.
- Тип базы данных —
Greenplum/Yandex MPP Analytics. - Параметры эндпоинта:
- Тип подключения — выберите
Ручная настройка. - Тип инсталляции — выберите
Кластер. - Кластер — выберите кластер из списка.
- База данных — укажите имя нужной БД.
- Пользователь — укажите
user. - Пароль — укажите пароль пользователя
user.
- Тип подключения — выберите
- Направление —
-
Создайте эндпоинт для источника Apache Kafka® и трансфер:
ВручнуюTerraform-
Создайте эндпоинт-источник типа
Apache Kafka®:-
Направление —
Источник. -
Укажите имя эндпоинта.
-
Тип базы данных —
Kafka. -
Параметры эндпоинта:
-
Тип подключения — выберите
Ручная настройка. -
Тип инсталляции — выберите
Кластер Managed Service for Apache Kafka. -
Кластер Managed Service for Apache Kafka — выберите кластер-источник из списка.
-
Аутентификация — выберите
SASLи укажите имя и пароль пользователя, созданного ранее. -
Полное имя топика — укажите
sensors. -
В поле Схема данных укажите правила конвертации типа
json. ВыберитеJSON-спецификацияи в открывшуюся форму скопируйте следующую спецификацию полей:sensors-specification
[ { "name": "device_id", "type": "utf8", "key": true }, { "name": "datetime", "type": "utf8" }, { "name": "latitude", "type": "double" }, { "name": "longitude", "type": "double" }, { "name": "altitude", "type": "double" }, { "name": "speed", "type": "double" }, { "name": "battery_voltage", "type": "double" }, { "name": "cabin_temperature", "type": "uint16" }, { "name": "fuel_level", "type": "uint16" } ]
-
-
-
Создайте трансфер типа Репликация, использующий созданные эндпоинты.
-
Активируйте трансфер и дождитесь его перехода в статус Реплицируется.
-
Укажите в файле
kafka-greenplum.tfпеременные:gp_target_endpoint_id— значение идентификатора эндпоинта для приемника Greenplum®;transfer_enabled– значение1для создания трансфера.
-
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
-
Трансфер активируется автоматически. Дождитесь его перехода в статус Реплицируется.
-
Проверьте работоспособность трансфера
Убедитесь, что в базу данных Greenplum® переносятся данные из топика кластера-источника Managed Service for Apache Kafka®:
-
Отправьте данные из файла
sample.jsonв топикsensorsManaged Service for Apache Kafka® с помощью утилитjqиkafkacat:jq -rc . sample.json | kafkacat -P \ -b <FQDN_хоста-брокера>:9091 \ -t sensors \ -k key \ -X security.protocol=SASL_SSL \ -X sasl.mechanisms=SCRAM-SHA-512 \ -X sasl.username="<имя_пользователя_в_кластере-источнике>" \ -X sasl.password="<пароль_пользователя_в_кластере-источнике>" \ -X ssl.ca.location=/usr/local/share/ca-certificates/Yandex/YandexInternalRootCA.crt -ZПодробнее о настройке SSL-сертификата и работе с
kafkacatв разделе Подключение к кластеру Apache Kafka® из приложений. -
Убедитесь, что в базу данных Greenplum® перенеслись данные из кластера-источника Managed Service for Apache Kafka®:
-
Проверьте, что база данных содержит таблицу
sensorsс тестовыми данными из топика:SELECT * FROM public.sensors;
Удалите созданные ресурсы
Чтобы снизить потребление ресурсов, которые вам не нужны, удалите их:
-
Убедитесь, что трансфер находится в статусе Завершен и удалите его.
-
Удалите ресурсы в зависимости от способа их создания:
ВручнуюTerraform-
В терминале перейдите в директорию с планом инфраструктуры.
Важно
Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.
-
Удалите ресурсы:
-
Выполните команду:
terraform destroy -
Подтвердите удаление ресурсов и дождитесь завершения операции.
Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.
-
-