Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Data Processing
  • Начало работы
    • Все руководства
      • Обмен данными с Managed Service for ClickHouse®
      • Импорт данных из кластера Managed Service for MySQL® с помощью Sqoop
      • Импорт данных из кластера Managed Service for PostgreSQL с помощью Sqoop
      • Интеграция с сервисом DataSphere
      • Работа с топиками Apache Kafka® с помощью PySpark-заданий
      • Автоматизация работы с помощью Managed Service for Apache Airflow™
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • Вопросы и ответы
  • Обучающие курсы

В этой статье:

  • Необходимые платные ресурсы
  • Перед началом работы
  • Вручную
  • С помощью Terraform
  • Подготовка кластера-источника
  • Импорт базы данных
  • Проверка корректности импорта
  • Удаление созданных ресурсов
  1. Практические руководства
  2. Интеграция Yandex Data Processing с другими сервисами
  3. Импорт данных из кластера Managed Service for MySQL® с помощью Sqoop

Импорт данных из кластера Yandex Managed Service for MySQL® с помощью Sqoop

Статья создана
Yandex Cloud
Обновлена 8 апреля 2025 г.
  • Необходимые платные ресурсы
  • Перед началом работы
    • Вручную
    • С помощью Terraform
  • Подготовка кластера-источника
  • Импорт базы данных
  • Проверка корректности импорта
  • Удаление созданных ресурсов

Утилита Sqoop позволяет импортировать базы данных в кластер Yandex Data Processing. В зависимости от конфигурации кластера Yandex Data Processing вы можете выполнить импорт в:

  • бакет Yandex Object Storage;
  • директорию HDFS;
  • Apache Hive;
  • Apache HBase.

Чтобы импортировать базы данных кластера-источника с помощью Sqoop в кластер-приемник Yandex Data Processing:

  1. Подготовьте кластер-источник.
  2. Выполните импорт.
  3. Проверьте корректность импорта.

Если созданные ресурсы вам больше не нужны, удалите их.

Примечание

Утилита Sqoop не поддерживается для кластеров Yandex Data Processing версии 2.0 и выше. В качестве альтернативы используйте функциональные возможности Apache Spark™.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость поддержки описываемого решения входят:

  • Плата за кластер Yandex Data Processing (см. тарифы Yandex Data Processing).
  • Плата за кластер Managed Service for MySQL®: использование вычислительных ресурсов, выделенных хостам, и дискового пространства (см. тарифы MySQL®).
  • Плата за NAT-шлюз (см. тарифы Virtual Private Cloud).
  • Плата за бакет Object Storage: хранение данных и выполнение операций с ними (см. тарифы Object Storage).
  • Плата за ВМ: использование вычислительных ресурсов, операционной системы и хранилища (см. тарифы Compute Cloud).
  • Плата за публичные IP-адреса, если для ВМ или хостов кластера включен публичный доступ (см. тарифы Virtual Private Cloud).

Перед началом работыПеред началом работы

Примечание

Разместите кластеры и виртуальную машину в одной облачной сети.

  1. Создайте облачную сеть.
  2. Создайте подсеть в зоне доступности ru-central1-d.
  3. Настройте NAT-шлюз для созданной подсети — это обязательное условие для работы кластера Yandex Data Processing.

Остальные ресурсы вы можете создать вручную или с помощью Terraform.

ВручнуюВручную

  1. Создайте кластер Managed Service for MySQL® любой подходящей вам конфигурации со следующими настройками:

    • Имя БД — db1;
    • Имя пользователя — user1.
  2. Чтобы импортировать данные в бакет Object Storage:

    1. Создайте бакет с ограниченным доступом.

    2. Создайте сервисный аккаунт с ролями:

      • dataproc.agent;
      • dataproc.provisioner;
      • monitoring.viewer;
      • storage.viewer;
      • storage.uploader.
    3. Выдайте этому сервисному аккаунту разрешения на чтение и запись в бакет.

  3. Создайте кластер Yandex Data Processing любой подходящей вам конфигурации.

    Укажите настройки, соответствующие хранилищу, в которое будут импортированы данные:

    Object Storage
    Директория HDFS
    Apache Hive
    Apache HBase
    • Сервисный аккаунт — имя созданного ранее сервисного аккаунта.
    • Имя бакета — имя созданного ранее бакета.
    • Сервисы — Sqoop.

    Сервисы:

    • HBase,
    • HDFS,
    • Sqoop,
    • Yarn,
    • Zookeeper.
    • Сервисы:

      • HDFS,
      • Hive,
      • Mapreduce,
      • Sqoop,
      • Yarn.
    • Свойства — ключ hive:hive.execution.engine со значением mr.

    Сервисы:

    • HBase,
    • HDFS,
    • Sqoop,
    • Yarn,
    • Zookeeper.
  4. Создайте виртуальную машину для подключения к кластерам Managed Service for MySQL® и Yandex Data Processing.

  5. Если вы используете группы безопасности для кластеров и виртуальной машины, настройте их так, чтобы разрешить подключение:

    • к виртуальной машине и кластеру Yandex Data Processing;
    • к кластеру Managed Service for MySQL®.

С помощью TerraformС помощью Terraform

  1. Если у вас еще нет Terraform, установите его.

  2. Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.

  3. Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его.

  4. Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.

  5. Скачайте в ту же рабочую директорию файл конфигурации clusters-mysql-data-proc-and-vm.tf.

    В этом файле описаны:

    • группы безопасности для кластеров и виртуальной машины;
    • сервисный аккаунт для кластера Yandex Data Processing;
    • бакет Object Storage;
    • кластер Managed Service for MySQL®;
    • кластер Yandex Data Processing;
    • виртуальная машина с публичным доступом из интернета.
  6. Укажите параметры инфраструктуры в файле конфигурации clusters-mysql-data-proc-and-vm.tf в блоке locals:

    • folder_id — идентификатор каталога, в котором будут созданы ресурсы.

    • network_id — идентификатор созданной ранее облачной сети.

    • subnet_id — идентификатор созданной ранее подсети.

    • storage_sa_id — идентификатор сервисного аккаунта, с помощью которого будет создан бакет в Object Storage.

    • data_proc_sa — имя сервисного аккаунта для кластера Yandex Data Processing. Оно должны быть уникальным в каталоге.

    • my_cluster_version — версия MySQL® кластера Managed Service for MySQL®.

    • my_cluster_password — пароль для пользователя user1 базы данных db1 Managed Service for MySQL®.

    • vm_image_id — идентификатор публичного образа с Ubuntu без GPU. Например, для Ubuntu 20.04 LTS.

    • vm_username и vm_public_key — логин и абсолютный путь к публичному SSH-ключу, которые будут использоваться для доступа к виртуальной машине. По умолчанию в образе Ubuntu 20.04 LTS указанный логин игнорируется, вместо него создается пользователь с логином ubuntu. Используйте его для подключения к виртуальной машине.

    • bucket_name — имя бакета в Object Storage. Оно должны быть уникальным для всего Object Storage.

    • dp_public_key — абсолютный путь к публичному SSH-ключу для кластера Yandex Data Processing.

      Для SSH-подключения к хостам кластера Yandex Data Processing версии 1.х используйте имя пользователя root.

  7. Проверьте корректность файлов конфигурации Terraform с помощью команды:

    terraform validate
    

    Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  8. Создайте необходимую инфраструктуру:

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

    В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления.

Подготовка кластера-источникаПодготовка кластера-источника

  1. Подключитесь к базе данных db1 кластера Yandex Managed Service for MySQL® от имени пользователя user1.

  2. Наполните базу тестовыми данными. В качестве примера используется простая таблица с именами и возрастом людей:

    1. Создайте таблицу:

      CREATE TABLE persons (
          Name VARCHAR(30) NOT NULL,
          Age INTEGER DEFAULT 0,
          PRIMARY KEY (Name)
      );
      
    2. Наполните таблицу данными:

      INSERT INTO persons (Name, Age) VALUES
          ('Anna', 19),
          ('Michael', 65),
          ('Fred', 28),
          ('Alsou', 50),
          ('Max', 27),
          ('John', 34),
          ('Dmitry', 42),
          ('Oleg', 19),
          ('Alina', 20),
          ('Maria', 28);
      

Импорт базы данныхИмпорт базы данных

Чтобы обеспечить параллелизм базы данных, Sqoop позволяет разделять импортируемые данные не только по первичному ключу, но и по другим столбцам таблицы. В примере разделение данных выполняется по столбцу age.

Пусть:

  • FQDN хоста подкластера Yandex Data Processing для хранения данных: rc1c-dataproc-d-vfw6fa8x********.mdb.yandexcloud.net.
  • Имя бакета в Object Storage.
  • Имена директорий в Object Storage и HDFS: import-directory.
  • Имя базы данных Apache Hive: db-hive.
  • Имя семейства столбцов Apache HBase: family1.
  • Имена таблиц HBase и Hive: import-table.
  • Идентификатор кластера Managed Service for MySQL®: c9qgcd6lplrs********.
Object Storage
Директория HDFS
Apache Hive
Apache HBase
  1. Выполните все необходимые подготовительные шаги.

  2. Выполните команду:

    sqoop import "-Dorg.apache.sqoop.splitter.allow_text_splitter=true" \
        --connect "jdbc:mysql://c-c9qgcd6lplrs********.rw.mdb.yandexcloud.net:3306/db1" \
        --username "user1" \
        --P \
        --table "persons" \
        --target-dir "s3a://<имя_бакета>/import-directory" \
        --split-by "age"
    
  1. Выполните все необходимые подготовительные шаги.

  2. Выполните команду:

    sqoop import "-Dorg.apache.sqoop.splitter.allow_text_splitter=true" \
        --connect "jdbc:mysql://c-c9qgcd6lplrs********.rw.mdb.yandexcloud.net:3306/db1" \
        --username "user1" \
        --table "persons" \
        --target-dir "import-directory" \
        --P \
        --split-by "age"
    
  1. Выполните все необходимые подготовительные шаги.

  2. Выполните команду:

    sqoop import "-Dorg.apache.sqoop.splitter.allow_text_splitter=true" \
        --connect "jdbc:mysql://c-c9qgcd6lplrs********.rw.mdb.yandexcloud.net:3306/db1" \
        --username "user1" \
        --P \
        --table "persons" \
        --hive-import \
        --create-hive-table \
        --hive-database "db-hive" \
        --hive-table "import-table" \
        --split-by "age"
    
  1. Выполните все необходимые подготовительные шаги.

  2. Выполните команду:

    sqoop import "-Dorg.apache.sqoop.splitter.allow_text_splitter=true" \
        --connect "jdbc:mysql://c-c9qgcd6lplrs********.rw.mdb.yandexcloud.net:3306/db1" \
        --username "user1" \
        --P \
        --table "persons" \
        --hbase-create-table \
        --column-family "family1" \
        --hbase-table "import-table" \
        --split-by "age"
    

Проверка корректности импортаПроверка корректности импорта

Если импорт прошел успешно, вы увидите содержимое таблицы persons.

Object Storage
Директория HDFS
Apache Hive
Apache HBase

Скачайте из бакета файлы с результатами импорта.

  1. Подключитесь по SSH к хосту подкластера Yandex Data Processing для хранения данных.

  2. Выполните команду:

    hdfs dfs -cat /user/root/import-directory/*
    
  1. Подключитесь по SSH к хосту подкластера Yandex Data Processing для хранения данных.

  2. Выполните команду:

    hive -e "SELECT * FROM import-table;"
    
  1. Подключитесь по SSH к хосту подкластера Yandex Data Processing для хранения данных.

  2. Выполните команду:

    echo -e "scan 'import-table'" | hbase shell -n
    

Удаление созданных ресурсовУдаление созданных ресурсов

Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать:

Вручную
Terraform
  1. Удалите виртуальную машину.

  2. Если вы зарезервировали для виртуальной машины публичный статический IP-адрес, освободите и удалите его.

  3. Удалите кластеры:

    • Managed Service for MySQL®;
    • Yandex Data Processing.
  4. Если вы создавали бакет Yandex Object Storage, удалите его.

  5. Удалите подсеть.

  6. Удалите таблицу маршрутизации.

  7. Удалите NAT-шлюз.

  8. Удалите облачную сеть.

  9. Удалите сервисный аккаунт.

Чтобы удалить инфраструктуру, созданную с помощью Terraform:

  1. В терминале перейдите в директорию с планом инфраструктуры.

    Важно

    Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.

  2. Удалите ресурсы:

    1. Выполните команду:

      terraform destroy
      
    2. Подтвердите удаление ресурсов и дождитесь завершения операции.

    Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.

Удалите созданные вручную:

  1. Подсеть.
  2. Таблицу маршрутизации.
  3. NAT-шлюз.
  4. Облачную сеть.

Была ли статья полезна?

Предыдущая
Обмен данными с Managed Service for ClickHouse®
Следующая
Импорт данных из кластера Managed Service for PostgreSQL с помощью Sqoop
Проект Яндекса
© 2025 ООО «Яндекс.Облако»