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

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

  • Роли для создания кластера
  • Роли для работы автомасштабирования в сети другого каталога
  • Настройте сеть
  • Настройте группы безопасности
  • Создайте кластер Yandex Data Processing
  1. Пошаговые инструкции
  2. Кластеры Yandex Data Processing
  3. Создание кластера с автомасштабированием в сети другого каталога

Создание кластера Yandex Data Processing с автомасштабированием в сети другого каталога

Статья создана
Yandex Cloud
Улучшена
Обновлена 24 апреля 2025 г.
  • Роли для создания кластера
  • Роли для работы автомасштабирования в сети другого каталога
  • Настройте сеть
  • Настройте группы безопасности
  • Создайте кластер Yandex Data Processing

Роли для создания кластераРоли для создания кластера

Для создания кластера Yandex Data Processing вашему аккаунту в Yandex Cloud нужны роли:

  • dataproc.editor — чтобы создать кластер;
  • vpc.user — чтобы работать с сетью кластера;
  • iam.serviceAccounts.user — чтобы привязать сервисный аккаунт к кластеру и создавать ресурсы от имени этого сервисного аккаунта.

Сервисному аккаунту кластера Yandex Data Processing должны быть назначены роли:

  • dataproc.agent — чтобы сервисный аккаунт мог получать информацию о состоянии хостов кластера, заданиях и лог-группах.
  • dataproc.provisioner — чтобы сервисный аккаунт мог взаимодействовать с автоматически масштабируемой группой ВМ. Тогда будет доступно автомасштабирование подкластеров.

О назначении ролей читайте в документации Yandex Identity and Access Management.

Роли для работы автомасштабирования в сети другого каталогаРоли для работы автомасштабирования в сети другого каталога

Для работы автомасштабирования в сети другого каталога:

  1. В консоли управления перейдите в нужный каталог.

  2. Выдайте сервисному аккаунту кластера Yandex Data Processing доступ к каталогу и роли:

    • resource-manager.viewer — чтобы просматривать метаинформацию облаков и каталогов;
    • vpc.user — чтобы работать с сетью;
    • dns.editor — чтобы работать с DNS.

Настройте сетьНастройте сеть

  1. В консоли управления перейдите в каталог, в котором нужно создать сеть.
  2. Создайте сеть с подсетями.
  3. Настройте NAT-шлюз в подсети, в которой будет размещен будущий кластер Yandex Data Processing.

Настройте группы безопасностиНастройте группы безопасности

Важно

Группы безопасности необходимо создать и настроить перед созданием кластера Yandex Data Processing. Если в выбранных группах безопасности не будет необходимых правил, Yandex Cloud заблокирует создание кластера Yandex Data Processing.

  1. В консоли управления перейдите в каталог, где была создана сеть.
  2. Создайте одну или несколько групп безопасности для служебного трафика кластера Yandex Data Processing.
  3. Добавьте правила:
    • По одному правилу для входящего и исходящего служебного трафика:

      • Диапазон портов — 0-65535.
      • Протокол — Любой.
      • Источник/Назначение — Группа безопасности.
      • Группа безопасности — Текущая.
    • Отдельное правило для исходящего HTTPS-трафика. Это позволит использовать бакеты Yandex Object Storage, UI Proxy и автоматическое масштабирование кластеров Yandex Data Processing.

      Вы можете настроить это правило одним из двух способов:

      На все адреса
      На адреса, используемые Yandex Cloud
      • Диапазон портов — 443.
      • Протокол — TCP.
      • Назначение — CIDR.
      • CIDR блоки — 0.0.0.0/0.
      • Диапазон портов — 443.
      • Протокол — TCP.
      • Назначение — CIDR.
      • CIDR блоки:
        • 84.201.181.26/32 — получение статуса кластера Yandex Data Processing, запуск заданий, UI Proxy.
        • 158.160.59.216/32 — мониторинг состояния кластера Yandex Data Processing, автомасштабирование.
        • 213.180.193.243/32 — доступ к Object Storage.
        • 84.201.181.184/32 — адрес Cloud Logging.
    • Правило, разрешающее доступ к NTP-серверам для синхронизации времени:

      • Диапазон портов — 123.
      • Протокол — UDP.
      • Назначение — CIDR.
      • CIDR блоки — 0.0.0.0/0.

Если планируется использовать несколько групп безопасности для кластера Yandex Data Processing, разрешите весь трафик между этими группами.

Примечание

Вы можете задать более детальные правила для групп безопасности, например, разрешающие трафик только в определенных подсетях.

Группы безопасности должны быть корректно настроены для всех подсетей, в которых будут размещены хосты кластера Yandex Data Processing.

Вы можете настроить группы безопасности после создания кластера Yandex Data Processing, чтобы подключиться к Metastore или хостам кластера Yandex Data Processing через интернет или промежуточную виртуальную машину.

Создайте кластер Yandex Data ProcessingСоздайте кластер Yandex Data Processing

Кластер Yandex Data Processing должен состоять из подкластера с хостом-мастером и как минимум из одного подкластера для хранения или обработки данных.

Если вы хотите создать копию кластера Yandex Data Processing, импортируйте его конфигурацию в Terraform.

Консоль управления
CLI
Terraform
API
  1. В консоли управления выберите каталог, в котором нужно создать кластер Yandex Data Processing.

  2. Нажмите кнопку Создать ресурс и выберите Кластер Yandex Data Processing в выпадающем списке.

  3. Укажите имя и при необходимости описание кластера Yandex Data Processing.

    Требования к имени:

    • должно быть уникальным в рамках каталога;
    • длина — от 2 до 63 символов;
    • может содержать строчные буквы латинского алфавита, цифры и дефисы;
    • первый символ — буква, последний — не дефис.
  4. Выберите окружение, в котором нужно создать кластер (после создания кластера окружение изменить невозможно):

    • PRODUCTION — для стабильных версий ваших приложений.
    • PRESTABLE — для тестирования. Prestable-окружение аналогично Production-окружению и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
  5. Добавьте или удалите метки кластера. Они позволяют разделить и сгруппировать ресурсы на логические группы.

  6. Задайте следующие настройки кластера:

    • Версия образа и сервисы, которые вы хотите использовать в кластере Yandex Data Processing.

      Используя образ версии 2.0.39 или выше, вы можете создать легковесный кластер без HDFS и подкластеров для хранения данных. При этом обязательно добавьте один или несколько подкластеров для обработки данных и укажите имя бакета.

      Совет

      Чтобы использовать самую свежую версию образа, укажите значение 2.0.

    • Публичная часть SSH-ключа в поле SSH-ключ. Как сгенерировать и использовать SSH-ключи, читайте в документации Yandex Compute Cloud.

    • Сервисный аккаунт, которому нужно разрешить доступ к кластеру Yandex Data Processing.

    • Зона доступности для кластера Yandex Data Processing.

    • (Опционально) Свойства компонентов кластера.

    • (Опционально) Пользовательские скрипты инициализации хостов кластера. Для каждого скрипта укажите следующую информацию:

      • URI-ссылка на скрипт инициализации в схеме https://, http://, hdfs:// или s3a://.

      • (Опционально) Таймаут выполнения скрипта (в секундах). Если скрипт инициализации выполняется дольше указанного времени, он будет прерван.

      • (Опционально) Аргументы, заключенные в квадратные скобки и разделенные запятыми. С этими аргументами выполняется скрипт инициализации. Пример аргументов:

        ["arg1","arg2",...,"argN"]
        
    • Формат, в котором будет указано имя бакета Yandex Object Storage: Список или ID.

    • Бакет, который будет использоваться кластером.

      В зависимости от выбранного формата либо выберите из списка бакет с нужным именем, либо укажите имя бакета вручную. Его можно получить со списком бакетов в каталоге.

      Сервисный аккаунт кластера Yandex Data Processing должен иметь разрешение READ и WRITE для этого бакета.

    • Формат, в котором будет указана сеть для кластера Yandex Data Processing.

    • Сеть для кластера.

    • Группы безопасности, в которых имеются необходимые разрешения.

      Важно

      При создании кластера Yandex Data Processing проверяются настройки групп безопасности. Если функционирование кластера Yandex Data Processing с этими настройками невозможно, будет выведено предупреждение. Пример работающих настроек приведен выше.

    • UI Proxy. Если опция UI Proxy включена, будут доступны веб-интерфейсы компонентов Yandex Data Processing.

    • Лог-группа Yandex Cloud Logging, в которую кластер будет отправлять логи.

      Чтобы сохранять логи в лог-группе, назначьте сервисному аккаунту кластера роль logging.writer.

  7. Настройте подкластеры Yandex Data Processing. Доступны следующие виды:

    • Подкластер с хостом-мастером, обозначается как Мастер. Может быть только один.
    • Подкластеры для хранения данных, обзначаются как Data. На них разворачиваются компоненты для хранения.
    • Подкластеры для обработки данных, обзначаются как Compute. На них разворачиваются компоненты для вычислений. Хранилище на таком подкластере предназначено только для временного хранения обрабатываемых файлов.

    Для каждого подкластера Yandex Data Processing укажите:

    • Имя подкластера.

    • Количество хостов (хост-мастер может быть только один).

    • Класс хостов — платформа и вычислительные ресурсы, доступные хосту.

    • Размер и тип хранилища.

    • Подсеть.

      В подсети для подкластера Yandex Data Processing с хостом-мастером настройте NAT-шлюз. Подробнее см. в разделе Настройте сеть.

    • Доступ к хостам подкластера Yandex Data Processing из интернета. Чтобы включить доступ, выберите опцию Публичный доступ. В этом случае подключаться к хостам подкластера Yandex Data Processing можно только с использованием SSL-соединения. Подробнее см. в разделе Подключение к кластеру Yandex Data Processing.

      Важно

      После создания кластера Yandex Data Processing невозможно запросить или отключить публичный доступ к подкластеру. Однако подкластер Yandex Data Processing для обработки данных можно удалить и создать заново с нужной настройкой публичного доступа.

  8. (Опционально) Настройте автоматическое масштабирование подкластеров для обработки данных:

    1. В настройках подкластера типа Compute включите настройку Автоматическое масштабирование.
    2. Задайте параметры автоматического масштабирования.
    3. По умолчанию в качестве метрики для автоматического масштабирования используется yarn.cluster.containersPending. Чтобы включить масштабирование на основе загрузки CPU, выключите настройку Масштабирование по умолчанию и укажите целевой уровень загрузки CPU.
    4. Нажмите кнопку Добавить.
  9. (Опционально) Добавьте и настройте дополнительные подкластеры для хранения или обработки данных.

  10. (Опционально) В дополнительных настройках включите защиту от непреднамеренного удаления кластера.

    Включенная защита не помешает подключиться к кластеру Yandex Data Processing вручную и удалить данные.

  11. Нажмите кнопку Создать кластер.

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

Чтобы создать кластер Yandex Data Processing:

  1. Проверьте, есть ли в каталоге подсети для хостов кластера Yandex Data Processing:

    yc vpc subnet list
    

    Если ни одной подсети в каталоге нет, создайте нужные подсети в сервисе Yandex Virtual Private Cloud.

  2. Посмотрите описание команды CLI для создания кластера Yandex Data Processing:

    yc dataproc cluster create --help
    
  3. Укажите параметры кластера Yandex Data Processing в команде создания (в примере приведены не все доступные параметры):

    yc dataproc cluster create <имя_кластера> \
      --environment=<окружение> \
      --bucket=<имя_бакета> \
      --zone=<зона_доступности> \
      --service-account-name=<имя_сервисного_аккаунта> \
      --version=<версия_образа> \
      --services=<список_компонентов> \
      --ssh-public-keys-file=<путь_к_открытому_SSH-ключу> \
      --subcluster name=<имя_подкластера_с_хостом-мастером>,`
                   `role=masternode,`
                   `resource-preset=<класс_хоста>,`
                   `disk-type=<тип_хранилища>,`
                   `disk-size=<размер_хранилища_ГБ>,`
                   `subnet-name=<имя_подсети>,`
                   `assign-public-ip=<публичный_доступ_к_хосту_подкластера> \
      --subcluster name=<имя_подкластера_для_хранения_данных>,`
                   `role=datanode,`
                   `resource-preset=<класс_хоста>,`
                   `disk-type=<тип_хранилища>,`
                   `disk-size=<размер_хранилища_ГБ>,`
                   `subnet-name=<имя_подсети>,`
                   `hosts-count=<количество_хостов>,`
                   `assign-public-ip=<публичный_доступ_к_хосту_подкластера> \
      --deletion-protection \
      --ui-proxy=<доступ_к_веб-интерфейсам_компонентов> \
      --log-group-id=<идентификатор_лог-группы> \
      --security-group-ids=<список_идентификаторов_групп_безопасности>
    

    Примечание

    Имя кластера Yandex Data Processing должно быть уникальным в рамках каталога. Может содержать латинские буквы, цифры, дефис и подчеркивание. Максимальная длина имени 63 символа.

    Где:

    • --environment — окружение кластера: prestable или production.

    • --bucket — имя бакета в Object Storage, в котором будут храниться зависимости заданий и результаты их выполнения. Сервисный аккаунт кластера Yandex Data Processing должен иметь разрешение READ и WRITE для этого бакета.

    • --zone — зона доступности, в которой должны быть размещены хосты кластера Yandex Data Processing.

    • --service-account-name — имя сервисного аккаунта кластера Yandex Data Processing.

    • --version — версия образа.

      Используя образ версии 2.0.39 или выше, вы можете создать легковесный кластер без HDFS и подкластеров для хранения данных. При этом обязательно добавьте один или несколько подкластеров для обработки данных и укажите имя бакета.

      Совет

      Чтобы использовать самую свежую версию образа, укажите значение 2.0 в параметре --version.

    • --services — список компонентов, которые вы хотите использовать в кластере Yandex Data Processing. Если не указать этот параметр, будет использоваться набор по умолчанию: yarn, tez, spark.

    • --ssh-public-keys-file — полный путь к файлу с публичной частью SSH-ключа, который будет использоваться для доступа к хостам кластера Yandex Data Processing. Как создать и использовать SSH-ключи, читайте в документации Yandex Compute Cloud.

    • --subcluster — параметры подкластеров Yandex Data Processing:

      • name — имя подкластера Yandex Data Processing.

      • role — роль подкластера Yandex Data Processing: masternode, datanode или computenode.

      • resource-preset — класс хостов.

      • disk-type — тип хранилища: network-ssd, network-hdd или network-ssd-nonreplicated.

      • disk-size — размер хранилища в гигабайтах.

      • subnet-name — имя подсети.

      • hosts-count — количество хостов подкластеров Yandex Data Processing для хранения или обработки данных. Минимальное значение — 1, максимальное — 32.

      • assign-public-ip — доступ к хостам подкластера Yandex Data Processing из интернета. Может принимать значения true или false. Если доступ включен, подключаться к кластеру Yandex Data Processing можно только с использованием SSL-соединения. Подробнее см. в разделе Подключение к кластеру Yandex Data Processing.

        Важно

        После создания кластера Yandex Data Processing невозможно запросить или отключить публичный доступ к подкластеру. Однако подкластер Yandex Data Processing для обработки данных можно удалить и создать заново с нужной настройкой публичного доступа.

    • --deletion-protection — защита от удаления кластера Yandex Data Processing.

      Включенная защита кластера от удаления не помешает подключиться к нему вручную и удалить данные.

    • --ui-proxy — доступ к веб-интерфейсам компонентов Yandex Data Processing. Может принимать значения true или false.

    • --log-group-id — идентификатор лог-группы.

    • --security-group-ids — список идентификаторов групп безопасности.

    Чтобы создать кластер Yandex Data Processing, состоящих из нескольких подкластеров для хранения или обработки данных, передайте необходимое количество аргументов --subcluster в команде создания кластера:

    yc dataproc cluster create <имя_кластера> \
      ...
      --subcluster <параметры_подкластера> \
      --subcluster <параметры_подкластера> \
      ...
    
  4. Чтобы включить автоматическое масштабирование в подкластерах Yandex Data Processing для обработки данных, задайте параметры:

    yc dataproc cluster create <имя_кластера> \
      ...
      --subcluster name=<имя_подкластера>,`
                   `role=computenode`
                   `...`
                   `hosts-count=<минимальное_количество_хостов>`
                   `max-hosts-count=<максимальное_количество_хостов>,`
                   `preemptible=<использование_прерываемых_ВМ>,`
                   `warmup-duration=<время_на_разогрев_ВМ>,`
                   `stabilization-duration=<период_стабилизации>,`
                   `measurement-duration=<промежуток_измерения_нагрузки>,`
                   `cpu-utilization-target=<целевой_уровень_загрузки_CPU>,`
                   `autoscaling-decommission-timeout=<таймаут_декомиссии>
    

    Где:

    • hosts-count — минимальное количество хостов (ВМ) в подкластере Yandex Data Processing. Минимальное значение — 1, максимальное — 32.
    • max-hosts-count — максимальное количество хостов (ВМ) в подкластере Yandex Data Processing. Минимальное значение — 1, максимальное — 100.
    • preemptible — использование прерываемых ВМ. Может принимать значения true или false.
    • warmup-duration — время в секундах на разогрев ВМ, в формате <значение>s. Минимальное значение — 0s, максимальное — 600s (10 минут).
    • stabilization-duration — период в секундах, в течение которого требуемое количество ВМ не может быть снижено, в формате <значение>s. Минимальное значение — 60s (1 минута), максимальное — 1800s (30 минут).
    • measurement-duration — период в секундах, за который замеры нагрузки усредняются для каждой ВМ, в формате <значение>s. Минимальное значение — 60s (1 минута), максимальное — 600s (10 минут).
    • cpu-utilization-target — целевой уровень загрузки CPU, в процентах. Используйте эту настройку, чтобы включить масштабирование на основе загрузки CPU, иначе в качестве метрики будет использоваться yarn.cluster.containersPending (на основе количества ожидающих задания ресурсов). Минимальное значение — 10, максимальное — 100.
    • autoscaling-decommission-timeout — таймаут декомиссии в секундах. Минимальное значение — 0, максимальное — 86400 (сутки).
  5. Чтобы создать кластер Yandex Data Processing, размещенный на группах выделенных хостов, укажите через запятую их идентификаторы в параметре --host-group-ids:

    yc dataproc cluster create <имя_кластера> \
      ...
      --host-group-ids=<идентификаторы_групп_выделенных_хостов>
    

    Внимание

    Эту настройку нельзя изменить после создания кластера. Использование выделенных хостов существенно влияет на тарификацию кластера.

  6. Чтобы настроить хосты кластера Yandex Data Processing с помощью скриптов инициализации, укажите их в одном или нескольких параметрах --initialization-action:

    yc dataproc cluster create <имя_кластера> \
      ...
      --initialization-action uri=<URI_скрипта_инициализации>,`
                              `timeout=<таймаут_выполнения_скрипта>,`
                              `args=["arg1","arg2","arg3",...]
    

    Где:

    • uri — ссылка на скрипт инициализации в схеме https://, http://, hdfs:// или s3a://.
    • (Опционально) timeout — таймаут выполнения скрипта, в секундах. Скрипт инициализации, выполняющийся дольше указанного времени, будет прерван.
    • (Опционально) args — разделенные запятыми аргументы, с которыми должен быть выполнен скрипт инициализации.

Terraform позволяет быстро создать облачную инфраструктуру в Yandex Cloud и управлять ею с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language). При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.

Terraform распространяется под лицензией Business Source License, а провайдер Yandex Cloud для Terraform — под лицензией MPL-2.0.

Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform или в зеркале.

Чтобы создать кластер Yandex Data Processing:

  1. В командной строке перейдите в каталог, в котором будут расположены конфигурационные файлы Terraform с планом инфраструктуры. Если такой директории нет — создайте ее.

  2. Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.

  3. Создайте конфигурационный файл с описанием облачной сети, подсетей, группы безопасности и NAT-шлюза.

    Кластер Yandex Data Processing размещается в облачной сети. Если подходящая сеть у вас уже есть, описывать ее повторно не нужно.

    Хосты кластера Yandex Data Processing размещаются в подсетях выбранной облачной сети. Если подходящие подсети у вас уже есть, описывать их повторно не нужно.

    Пример структуры конфигурационного файла, в котором описывается облачная сеть с одной подсетью, группа безопасности, NAT-шлюз и таблица маршрутизации:

    resource "yandex_vpc_network" "test_network" {
      name = "<имя_сети>"
    }
    
    resource "yandex_vpc_subnet" "test_subnet" {
      name           = "<имя_подсети>"
      zone           = "<зона_доступности>"
      network_id     = yandex_vpc_network.test_network.id
      v4_cidr_blocks = ["<подсеть>"]
      route_table_id = yandex_vpc_route_table.data-processing-rt.id
    }
    
    resource "yandex_vpc_gateway" "data-processing-gateway" {
      name = "data-processing-gateway"
      shared_egress_gateway {}
    }
    
    resource "yandex_vpc_route_table" "data-processing-rt" {
      network_id = "${yandex_vpc_network.test-network.id}"
    
      static_route {
        destination_prefix = "0.0.0.0/0"
        gateway_id         = "${yandex_vpc_gateway.data-processing-gateway.id}"
      }
    }
    
    resource "yandex_vpc_security_group" "data-processing-sg" {
      description = "Security group for DataProc"
      name        = "data-processing-security-group"
      network_id  = yandex_vpc_network.data-proc-network.id
    
      egress {
        description    = "Allow outgoing HTTPS traffic"
        protocol       = "TCP"
        port           = 443
        v4_cidr_blocks = ["0.0.0.0/0"]
      }
    
      ingress {
        description       = "Allow any incomging traffic within the security group"
        protocol          = "ANY"
        from_port         = 0
        to_port           = 65535
        predefined_target = "self_security_group"
      }
    
      egress {
        description       = "Allow any outgoing traffic within the security group"
        protocol          = "ANY"
        from_port         = 0
        to_port           = 65535
        predefined_target = "self_security_group"
      }
    
      egress {
        description    = "Allow outgoing traffic to NTP servers for time synchronization"
        protocol       = "UDP"
        port           = 123
        v4_cidr_blocks = ["0.0.0.0/0"]
      }
    }
    
  4. Создайте конфигурационный файл с описанием следующих ресурсов:

    • Сервисный аккаунт, которому нужно разрешить доступ к кластеру Yandex Data Processing и бакету Object Storage.
    • Сервисный аккаунт для создания бакета Object Storage.
    • Статический ключ.
    • Бакет Object Storage для хранения результатов выполнения заданий.
    resource "yandex_iam_service_account" "data_proc_sa" {
      name        = "<имя_сервисного_аккаунта>"
      description = "<описание_сервисного_аккаунта>"
    }
    
    resource "yandex_resourcemanager_folder_iam_member" "dataproc-agent" {
      folder_id = "<идентификатор_каталога>"
      role      = "dataproc.agent"
      member    = "serviceAccount:${yandex_iam_service_account.data_proc_sa.id}"
    }
    
    resource "yandex_resourcemanager_folder_iam_member" "dataproc-provisioner" {
      folder_id = "<идентификатор_каталога>"
      role      = "dataproc.provisioner"
      member    = "serviceAccount:${yandex_iam_service_account.data_proc_sa.id}"
    }
    
    resource "yandex_iam_service_account" "bucket_sa" {
      name        = "<имя_сервисного_аккаунта>"
      description = "<описание_сервисного_аккаунта>"
    }
    
    resource "yandex_resourcemanager_folder_iam_member" "storage-admin" {
      folder_id = "<идентификатор_каталога>"
      role      = "storage.admin"
      member    = "serviceAccount:${yandex_iam_service_account.bucket_sa.id}"
    }
    
    resource "yandex_iam_service_account_static_access_key" "bucket_sa_static_key" {
      service_account_id = yandex_iam_service_account.bucket_sa.id
    }
    
    resource "yandex_storage_bucket" "data_bucket" {
      depends_on = [
        yandex_resourcemanager_folder_iam_member.storage-admin
      ]
    
      grant {
        id          = yandex_iam_service_account.data_proc_sa.id
        type        = "CanonicalUser"
        permissions = ["READ","WRITE"]
      }
    
      bucket     = "<имя_бакета>"
      access_key = yandex_iam_service_account_static_access_key.bucket_sa_static_key.access_key
      secret_key = yandex_iam_service_account_static_access_key.bucket_sa_static_key.secret_key
    }
    
  5. Создайте конфигурационный файл с описанием кластера Yandex Data Processing и его подкластеров.

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

    Пример структуры конфигурационного файла, в котором описывается кластер Yandex Data Processing из одного подкластера с хостом-мастером, одного подкластера для хранения данных и одного подкластера для обработки данных:

    resource "yandex_dataproc_cluster" "data_cluster" {
      bucket              = "${yandex_storage_bucket.data_bucket.bucket}"
      name                = "<имя_кластера>"
      description         = "<описание_кластера>"
      environment         = "<окружение_кластера>"
      service_account_id  = yandex_iam_service_account.data_proc_sa.id
      zone_id             = "<зона_доступности>"
      security_group_ids  = [yandex_vpc_security_group.data-processing-sg.id]
      deletion_protection = <защита_от_удаления_кластера>
      depends_on = [
        yandex_resourcemanager_folder_iam_member.dataproc-provisioner,
        yandex_resourcemanager_folder_iam_member.dataproc-agent
      ]
    
      cluster_config {
        version_id = "<версия_образа>"
    
        hadoop {
          services   = ["<список_компонентов>"]
          # Пример списка: ["HDFS", "YARN", "SPARK", "TEZ", "MAPREDUCE", "HIVE"].
          properties = {
            "<свойство_компонента>" = <значение>
            ...
          }
          ssh_public_keys = [
            file("<путь_к_открытому_SSH-ключу>")
          ]
        }
    
        subcluster_spec {
          name = "<имя_подкластера_с_хостом-мастером>"
          role = "MASTERNODE"
          resources {
            resource_preset_id = "<класс_хоста>"
            disk_type_id       = "<тип_хранилища>"
            disk_size          = <объем_хранилища_ГБ>
          }
          subnet_id   = yandex_vpc_subnet.test_subnet.id
          hosts_count = 1
        }
    
        subcluster_spec {
          name = "<имя_подкластера_для_хранения_данных>"
          role = "DATANODE"
          resources {
            resource_preset_id = "<класс_хоста>"
            disk_type_id       = "<тип_хранилища>"
            disk_size          = <объем_хранилища_ГБ>
          }
          subnet_id   = yandex_vpc_subnet.test_subnet.id
          hosts_count = <число_хостов_в_подкластере>
        }
    
        subcluster_spec {
          name = "<имя_подкластера_для_обработки_данных>"
          role = "COMPUTENODE"
          resources {
            resource_preset_id = "<класс_хоста>"
            disk_type_id       = "<тип_хранилища>"
            disk_size          = <объем_хранилища_ГБ>
          }
          subnet_id   = yandex_vpc_subnet.test_subnet.id
          hosts_count = <число_хостов_в_подкластере>
        }
      }
    }
    

    Где deletion_protection — защита от удаления кластера Yandex Data Processing. Может принимать значения true или false.

    Включенная защита кластера от удаления не помешает удалить пользователя или базу данных, а также подключиться вручную и удалить содержимое базы данных.

    Используя образ версии 2.0.39 или выше, вы можете создать легковесный кластер без HDFS и подкластеров для хранения данных. При этом обязательно добавьте один или несколько подкластеров для обработки данных и укажите имя бакета.

    Совет

    Чтобы использовать самую свежую версию образа, укажите значение 2.0 в параметре version_id.

    Чтобы получить доступ к веб-интерфейсам компонентов Yandex Data Processing, добавьте в описание кластера Yandex Data Processing поле ui_proxy с значением true:

    resource "yandex_dataproc_cluster" "data_cluster" {
      ...
      ui_proxy = true
      ...
    }
    

    Чтобы задать параметры автоматического масштабирования в подкластерах Yandex Data Processing для обработки данных, добавьте в описание соответствующего подкластера subcluster_spec блок autoscaling_config с нужными вам настройками:

    subcluster_spec {
      name = "<имя_подкластера>"
      role = "COMPUTENODE"
      ...
      autoscaling_config {
        max_hosts_count        = <максимальное_количество_ВМ_в_группе>
        measurement_duration   = <промежуток_измерения_нагрузки>
        warmup_duration        = <время_на_разогрев>
        stabilization_duration = <период_стабилизации>
        preemptible            = <использование_прерываемых_ВМ>
        cpu_utilization_target = <целевой_уровень_загрузки_vCPU>
        decommission_timeout   = <таймаут_декомиссии>
      }
    }
    

    Где:

    • max_hosts_count — максимальное количество хостов (ВМ) в подкластере Yandex Data Processing. Минимальное значение — 1, максимальное — 100.
    • measurement_duration — период в секундах, за который замеры нагрузки усредняются для каждой ВМ, в формате <значение>s. Минимальное значение — 60s (1 минута), максимальное — 600s (10 минут).
    • warmup_duration — время в секундах на разогрев ВМ, в формате <значение>s. Минимальное значение — 0s, максимальное — 600s (10 минут).
    • stabilization_duration — период в секундах, в течение которого требуемое количество ВМ не может быть снижено, в формате <значение>s. Минимальное значение — 60s (1 минута), максимальное — 1800s (30 минут).
    • preemptible — использование прерываемых ВМ. Может принимать значения true или false.
    • cpu_utilization_target — целевой уровень загрузки CPU, в процентах. Используйте эту настройку, чтобы включить масштабирование на основе загрузки CPU, иначе в качестве метрики будет использоваться yarn.cluster.containersPending (на основе количества ожидающих задания ресурсов). Минимальное значение — 10, максимальное — 100.
    • decommission_timeout — таймаут декомиссии в секундах. Минимальное значение — 0, максимальное — 86400 (сутки).

    Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера.

  6. Проверьте корректность файлов конфигурации Terraform:

    1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.

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

      terraform validate
      

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

  7. Создайте кластер Yandex Data Processing:

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

      terraform plan
      

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

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

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

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

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

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

Чтобы создать кластер Yandex Data Processing, воспользуйтесь методом API create и передайте в запросе:

  • Идентификатор каталога, в котором должен быть размещен кластера Yandex Data Processing, в параметре folderId.

  • Имя кластера Yandex Data Processing в параметре name.

  • Окружение кластера в параметре environment — PRESTABLE или PRODUCTION.

  • Конфигурацию кластера Yandex Data Processing в параметре configSpec, в том числе:

    • Версию образа в параметре configSpec.versionId.

      Используя образ версии 2.0.39 или выше, вы можете создать легковесный кластер без HDFS и подкластеров для хранения данных. При этом обязательно добавьте один или несколько подкластеров для обработки данных и укажите имя бакета.

      Совет

      Чтобы использовать самую свежую версию образа, укажите значение 2.0.

    • Список компонентов в параметре configSpec.hadoop.services.

    • Публичную часть SSH-ключа в параметре configSpec.hadoop.sshPublicKeys.

    • Настройки подкластеров Yandex Data Processing в параметре configSpec.subclustersSpec.

  • Зону доступности кластера Yandex Data Processing в параметре zoneId.

  • Идентификатор сервисного аккаунта кластера Yandex Data Processing в параметре serviceAccountId.

  • Имя бакета в параметре bucket.

  • Идентификаторы групп безопасности кластера Yandex Data Processing в параметре hostGroupIds.

  • Настройки защиты от удаления кластера Yandex Data Processing в параметре deletionProtection.

    Включенная защита кластера от удаления не помешает подключиться к нему вручную и удалить данные.

Чтобы назначить публичный IP-адрес всем хостам подкластера Yandex Data Processing, передайте значение true в параметре configSpec.subclustersSpec.assignPublicIp.

Чтобы создать кластер Yandex Data Processing, размещенный на группах выделенных хостов, передайте список их идентификаторов в параметре hostGroupIds.

Внимание

Эту настройку нельзя изменить после создания кластера. Использование выделенных хостов существенно влияет на тарификацию кластера.

Чтобы настроить хосты кластера Yandex Data Processing с помощью скриптов инициализации, укажите их в одном или нескольких параметрах configSpec.hadoop.initializationActions.

После того как кластер Yandex Data Processing перейдет в статус Running, вы можете подключиться к хостам подкластеров Yandex Data Processing с помощью указанного SSH-ключа.

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

Предыдущая
Создание кластера
Следующая
Подключение к кластеру
Проект Яндекса
© 2025 ООО «Яндекс.Облако»