Загрузка данных из Object Storage в Yandex Managed Service for ClickHouse® с помощью Yandex Data Transfer
Примечание
В регионе Казахстан доступна только зона доступности kz1-a.
Вы можете перенести данные из Yandex Object Storage в таблицу кластера Managed Service for ClickHouse® с помощью сервиса Data Transfer. Для этого:
- Подготовьте облако к работе.
- Подготовьте тестовые данные.
- Подготовьте и активируйте трансфер.
- Проверьте работоспособность трансфера.
Если созданные ресурсы вам больше не нужны, удалите их.
Подготовьте облако к работе
Необходимые платные ресурсы
В стоимость инфраструктуры входят:
- Бакет Object Storage: использование хранилища и выполнение операций с данными (тарифы Object Storage).
- Кластер Managed Service for ClickHouse®: использование вычислительных ресурсов выделенных хостов, объем хранилища и резервных копий (тарифы Managed Service for ClickHouse®).
- Публичные IP-адреса, если для хостов кластера включен публичный доступ (тарифы Virtual Private Cloud).
Подготовьте инфраструктуру
-
Создайте кластер-приемник Managed Service for ClickHouse® со следующими настройками:
-
Конфигурация с двумя и более хостами ClickHouse® (для включения репликации в кластере).
-
Имя БД —
db1. -
Имя пользователя —
user1. -
Пароль —
<пароль_пользователя>. -
Выделен публичный доступ к хостам кластера.
Примечание
Публичный доступ к хостам кластера нужен, если вы планируете подключаться к кластеру через интернет. Этот вариант подключения более простой, и его рекомендуется использовать для прохождения руководства. К хостам без публичного доступа тоже можно подключиться, но только с виртуальных машин Yandex Cloud, расположенных в той же облачной сети, что и кластер.
-
-
Если вы используете группы безопасности в кластере, убедитесь, что они настроены правильно и допускают подключение к нему.
-
Создайте сервисный аккаунт с именем
storage-viewerи рольюstorage.viewer. Трансфер будет использовать его для доступа к бакету. -
Создайте статический ключ доступа для сервисного аккаунта
storage-viewer.
-
Если у вас еще нет Terraform, установите его.
-
Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.
-
Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.
-
Скачайте в ту же рабочую директорию файл конфигурации object-storage-to-clickhouse.tf
.В этом файле описаны:
- сеть;
- подсеть;
- группа безопасности, необходимая для подключения к кластеру;
- сервисный аккаунт, который будет использоваться для создания бакета и дальнейшего доступа к нему;
- секрет Yandex Lockbox, в котором будет храниться статический ключ сервисного аккаунта для настройки эндпоинта-источника;
- бакет-источник Object Storage;
- кластер-приемник Managed Service for ClickHouse®;
- эндпоинт для приемника;
- трансфер.
-
Укажите в файле
object-storage-to-clickhouse.tf:folder_id— идентификатор облачного каталога, такой же, как в настройках провайдера.bucket_name— имя бакета в соответствии с правилами именования.ch_password— пароль пользователя ClickHouse®.
-
Создайте ресурсы:
-
В терминале перейдите в директорию с конфигурационным файлом.
-
Проверьте корректность конфигурации с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список планируемых изменений: ресурсы и/или выходные переменные. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Подготовьте тестовые данные
-
Подготовьте два CSV-файла с тестовыми данными:
-
demo_data1.csv:1,Anna 2,Robert 3,Umar 4,Algul 5,Viktor -
demo_data2.csv:6,Maria 7,Alex
-
-
Загрузите файл
demo_data1.csvв бакет Object Storage.
Подготовьте и активируйте трансфер
-
Создайте эндпоинт-источник типа
Object Storageсо следующими настройками:-
Тип базы данных —
Object Storage. -
Настройки подключения → Настроить вручную:
-
Бакет — имя бакета в Object Storage.
-
Идентификатор ключа доступа AWS — открытая часть статического ключа сервисного аккаунта. Если вы создали инфраструктуру с помощью Terraform, скопируйте значение ключа из секрета Yandex Lockbox.
-
Секретный ключ доступа AWS — закрытая часть статического ключа сервисного аккаунта. Если вы создали инфраструктуру с помощью Terraform, скопируйте значение ключа из секрета Yandex Lockbox.
-
Эндпоинт —
https://storage.yandexcloud.kz. -
Регион —
kz1.
-
-
Формат данных —
CSV. -
Разделитель — запятая
,. -
Таблица —
table1. -
Схема результирующей таблицы — выберите
Вручнуюи укажите имена полей и типы данных:Id:Int64;Name:UTF8.
Остальные параметры оставьте по умолчанию.
-
-
Создайте эндпоинт-приемник и трансфер:
ВручнуюС помощью Terraform-
Создайте эндпоинт-приемник типа
ClickHouse®и укажите в нем параметры подключения к кластеру:- Тип подключения —
Кластер Managed Service for ClickHouse. - Managed кластер — кластер приемника ClickHouse® из выпадающего списка.
- База данных —
db1. - Пользователь —
user1. - Пароль —
<пароль_пользователя>.
- Тип подключения —
-
Создайте трансфер типа Копирование и репликация, использующий созданные эндпоинты.
-
Активируйте трансфер и дождитесь его перехода в статус Реплицируется.
-
Укажите в файле
object-storage-to-clickhouse.tfзначения параметров:source_endpoint_id— идентификатор эндпоинта для источника.transfer_enabled— значение1для создания трансфера.
-
Обновите ресурсы:
-
В терминале перейдите в директорию с конфигурационным файлом.
-
Проверьте корректность конфигурации с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список планируемых изменений: ресурсы и/или выходные переменные. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
Трансфер активируется автоматически. Дождитесь его перехода в статус Реплицируется. Активация может занять 5−10 минут.
-
-
Проверьте работоспособность трансфера
Чтобы убедиться в работоспособности трансфера, проверьте работу копирования и репликации.
Проверьте работу копирования
-
Подключитесь к базе данных
db1в кластере-приемнике Managed Service for ClickHouse®. -
Выполните запрос:
SELECT * FROM db1.table1;Пример ответа
__file_name | __row_index | Id | Name --------------+-------------+----+-------- demo_data1.csv | 1 | 1 | Anna demo_data1.csv | 2 | 2 | Robert demo_data1.csv | 3 | 3 | Umar demo_data1.csv | 4 | 4 | Algul demo_data1.csv | 5 | 5 | Viktor
Проверьте работу репликации
-
Загрузите файл
demo_data2.csvв бакет Object Storage. -
Убедитесь, что данные из файла
demo_data2.csvпоявились в базе данных приемника:-
Подключитесь к базе данных
db1в кластере-приемнике Managed Service for ClickHouse®. -
Выполните запрос:
SELECT * FROM db1.table1;Пример ответа
__file_name | __row_index | Id | Name ---------------+-------------+----+------- demo_data1.csv | 1 | 1 | Anna demo_data1.csv | 2 | 2 | Robert demo_data1.csv | 3 | 3 | Umar demo_data1.csv | 4 | 4 | Algul demo_data1.csv | 5 | 5 | Viktor demo_data2.csv | 1 | 6 | Maria demo_data2.csv | 2 | 7 | Alex
-
Удалите созданные ресурсы
Примечание
Перед удалением созданных ресурсов деактивируйте трансфер.
Чтобы перестать платить за созданные ресурсы:
-
Удалите объекты из бакета.
-
Остальные ресурсы удалите в зависимости от способа их создания:
ВручнуюС помощью Terraform-
В терминале перейдите в директорию с планом инфраструктуры.
Важно
Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.
-
Удалите ресурсы:
-
Выполните команду:
terraform destroy -
Подтвердите удаление ресурсов и дождитесь завершения операции.
Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.
-
-