Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Yandex Data Proc
  • Начало работы
  • Практические руководства
    • Все практические руководства
    • Работа с заданиями
      • Обзор
      • Работа с заданиями Hive
      • Работа с заданиями MapReduce
      • Работа с заданиями PySpark
      • Работа с заданиями Spark
      • Запуск заданий Apache Hive
      • Запуск Spark-приложений
      • Запуск заданий с удаленного хоста
    • Настройка сети для Data Proc
    • Использование Yandex Object Storage в Data Proc
    • Обмен данными с Yandex Managed Service for ClickHouse
    • Импорт данных из кластера Yandex Managed Service for MySQL с помощью Sqoop
    • Импорт данных из кластера Yandex Managed Service for PostgreSQL с помощью Sqoop
    • "Использование скриптов инициализации для настройки GeeseFS в Data Proc"
    • Интеграция с сервисом Yandex DataSphere
  • Пошаговые инструкции
    • Все инструкции
    • Информация об имеющихся кластерах
    • Создание кластера
    • Подключение к кластеру
    • Изменение кластера
    • Управление подкластерами
    • Изменение подкластера
    • Подключение к интерфейсам компонентов
    • Использование Sqoop
    • Управление заданиями
      • Все задания
      • Задания Spark
      • Задания PySpark
      • Задания Hive
      • Задания MapReduce
    • Удаление кластера
    • Работа с логами
    • Мониторинг состояния кластера и хостов
  • Концепции
    • Взаимосвязь ресурсов сервиса
    • Классы хостов
    • Среда исполнения
    • Интерфейсы и порты компонентов Data Proc
    • Задания в Data Proc
    • Автоматическое масштабирование
    • Декомиссия подкластеров и хостов
    • Сеть в Data Proc
    • Техническое обслуживание
    • Квоты и лимиты
    • Хранилище в Data Proc
    • Свойства компонентов
    • Логи в Data Proc
    • Скрипты инициализации
  • Управление доступом
  • Правила тарификации
  • Справочник API
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • ClusterService
      • JobService
      • ResourcePresetService
      • SubclusterService
      • OperationService
    • REST (англ.)
      • Overview
      • Cluster
        • Overview
        • create
        • delete
        • get
        • list
        • listHosts
        • listOperations
        • listUILinks
        • start
        • stop
        • update
      • Job
        • Overview
        • cancel
        • create
        • get
        • list
        • listLog
      • ResourcePreset
        • Overview
        • get
        • list
      • Subcluster
        • Overview
        • create
        • delete
        • get
        • list
        • update
  • История изменений
    • Изменения сервиса
    • Образы
  • Вопросы и ответы
  1. Пошаговые инструкции
  2. Создание кластера

Создание кластера Data Proc

Статья создана
Yandex Cloud
  • Настройте сеть
  • Настройте группы безопасности
  • Создайте кластер
  • Примеры
    • Создание легковесного кластера для заданий Spark и PySpark

Для создания кластера Data Proc пользователю должны быть назначены роли editor и dataproc.agent. Подробнее см. в описании ролей.

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

В подсети, к которой будет подключен подкластер с управляющим хостом, настройте NAT-шлюз. Это необходимо, чтобы подкластер мог взаимодействовать c сервисами Yandex Cloud или хостами в других сетях.

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

Важно

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

  1. Создайте одну или несколько групп безопасности для служебного трафика кластера.

  2. Добавьте правила:

    • По одному правилу для входящего и исходящего служебного трафика:

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

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

      На все адреса
      На адреса, используемые Yandex Cloud
      • Диапазон портов — 443.
      • Протокол — TCP.
      • Назначение — CIDR.
      • CIDR блоки — 0.0.0.0/0.
      • Диапазон портов — 443.
      • Протокол — TCP.
      • Назначение — CIDR.
      • CIDR блоки:
        • 84.201.181.26/32 — получение статуса кластера, запуск заданий, UI Proxy.
        • 213.180.193.8/32 — мониторинг состояния кластера, автомасштабирование.
        • 213.180.193.243/32 — доступ к Object Storage.

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

Примечание

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

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

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

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

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

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

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

  3. Введите имя кластера в поле Имя кластера. Требования к имени:

    • Должно быть уникальным в рамках каталога
    • Длина — от 3 до 63 символов.
    • Может содержать строчные буквы латинского алфавита, цифры и дефисы.
    • Первый символ — буква. Последний символ — не дефис.
  4. Выберите подходящую версию образа и сервисы, которые вы хотите использовать в кластере.

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

    Совет

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

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

  6. Выберите или создайте сервисный аккаунт, которому нужно разрешить доступ к кластеру.

  7. Выберите зону доступности для кластера.

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

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

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

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

    • (Опционально) Аргументы — заключенные в квадратные скобки [] и разделенные запятыми аргументы, с которыми должен быть выполнен скрипт инициализации, например:

      ["arg1","arg2",...,"argN"]
      
  10. Выберите имя бакета в Yandex Object Storage, в котором будут храниться зависимости заданий и результаты их выполнения.

  11. Выберите сеть для кластера.

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

    Важно

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

  13. Включите опцию UI Proxy, чтобы получить доступ к веб-интерфейсам компонентов Data Proc.

  14. Логи кластера сохраняются в сервисе Yandex Cloud Logging. Выберите нужную лог-группу из списка или создайте новую.

    Для работы этой функции назначьте сервисному аккаунту кластера роль logging.writer. Подробнее см. в документации Yandex Cloud Logging.

  15. Настройте подкластеры: не больше одного подкластера с управляющим хостом (обозначается как Мастер), и подкластеры для хранения или обработки данных.

    Роли подкластеров для хранения и обработки данных различаются тем, что на подкластерах для хранения данных можно разворачивать компоненты для хранения, а для обработки — компоненты для вычислений. Хранилище на подкластере для обработки данных предназначено только для временного хранения обрабатываемых файлов.

  16. Для каждого подкластера можно настроить:

    • Количество хостов.
    • Класс хостов — платформа и вычислительные ресурсы, доступные хосту.
    • Размер и тип хранилища.
    • Подсеть сети, в которой расположен кластер.

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

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

    Важно

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

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

    Примечание

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

    • editor;
    • dataproc.agent.
    1. В блоке Добавить подкластер нажмите кнопку Добавить.
    2. В поле Роли выберите COMPUTENODE.
    3. В блоке Масштабирование включите настройку Автоматическое масштабирование.
    4. Задайте параметры автоматического масштабирования.
    5. По умолчанию в качестве метрики для автоматического масштабирования используется yarn.cluster.containersPending. Чтобы включить масштабирование на основе загрузки CPU, выключите настройку Масштабирование по умолчанию и укажите целевой уровень загрузки CPU.
    6. Нажмите кнопку Добавить.
  18. При необходимости задайте дополнительные настройки кластера:

    Защита от удаления — управляет защитой кластера от непреднамеренного удаления пользователем.

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

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

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

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

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

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

    yc vpc subnet list
    

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

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

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

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

    Примечание

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

    Где:

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

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

    • --service-account-name — имя сервисного аккаунта кластера. Сервисному аккаунту кластера должна быть назначена роль mdb.dataproc.agent.

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

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

      Совет

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

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

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

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

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

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

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

      • disk-type — тип хранилища.

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

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

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

      • assign-public-ip — доступ к хостам подкластера из интернета. В этом случае подключаться к кластеру можно только с использованием SSL-соединения. Подробнее см. в разделе Подключение к кластеру Data Proc.

        Важно

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

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

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

    • --ui-proxy — доступ к веб-интерфейсам компонентов Data Proc.

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

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

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

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

      Где:

      • hosts-count — минимальное количество хостов (виртуальных машин) в подкластере. Минимальное значение — 1, максимальное — 32.
      • max-hosts-count — максимальное количество хостов (виртуальных машин) в подкластере. Минимальное значение — 1, максимальное — 100.
      • preemptible — использование прерываемых ВМ.
      • 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 (сутки).

      Примечание

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

      • editor;
      • dataproc.agent.
  4. Чтобы создать кластер, размещенный на группах выделенных хостов, укажите через запятую их идентификаторы в параметре --host-group-ids:

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

    Внимание

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

  5. Чтобы настроить хосты кластера с помощью скриптов инициализации, укажите их в одном или нескольких параметрах --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 и его провайдеры распространяются под лицензией Mozilla Public License.

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

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

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

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

  2. Если у вас еще нет Terraform, установите его и создайте конфигурационный файл с настройками провайдера.

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

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

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

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

    resource "yandex_vpc_network" "<имя сети в Terraform>" { name = "<имя сети>" }
    
    resource "yandex_vpc_subnet" "<имя подсети в Terraform>" {
      name           = "<имя подсети>"
      zone           = "<зона доступности>"
      network_id     = yandex_vpc_network.<имя сети в Terraform>.id
      v4_cidr_blocks = ["<подсеть>"]
    }
    
  4. Создайте конфигурационный файл с описанием сервисного аккаунта, которому нужно разрешить доступ к кластеру, а также статического ключа и бакета Yandex Object Storage для хранения заданий и результатов.

    resource "yandex_iam_service_account" "<имя сервисного аккаунта в Terraform>" {
      name        = "<имя сервисного аккаунта>"
      description = "<описание сервисного аккаунта>"
    }
    
    resource "yandex_resourcemanager_folder_iam_binding" "dataproc" {
      folder_id = "<идентификатор каталога>"
      role      = "mdb.dataproc.agent"
      members   = [
        "serviceAccount:${yandex_iam_service_account.<имя сервисного аккаунта в Terraform>.id}"
      ]
    }
    
    resource "yandex_resourcemanager_folder_iam_binding" "bucket-creator" {
      folder_id = "<идентификатор каталога>"
      role      = "editor"
      members   = [
        "serviceAccount:${yandex_iam_service_account.<имя сервисного аккаунта в Terraform>.id}"
      ]
    }
    
    resource "yandex_iam_service_account_static_access_key" "<имя статического ключа в Terraform>" {
      service_account_id = yandex_iam_service_account.<имя сервисного аккаунта в Terraform>.id
    }
    
    resource "yandex_storage_bucket" "<имя бакета в Terraform>" {
      depends_on = [
        yandex_resourcemanager_folder_iam_binding.bucket-creator
      ]
    
      bucket     = "<имя бакета>"
      access_key = yandex_iam_service_account_static_access_key.<имя статического ключа в Terraform>.access_key
      secret_key = yandex_iam_service_account_static_access_key.<имя статического ключа в Terraform>.secret_key
    }
    
  5. Создайте конфигурационный файл с описанием кластера и его подкластеров.

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

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

    resource "yandex_dataproc_cluster" "<имя кластера в Terraform>" {
      bucket              = "<имя бакета в Terraform>"
      name                = "<имя кластера>"
      description         = "<описание кластера>"
      service_account_id  = "<идентификатор сервисного аккаунта в Terraform>"
      zone_id             = "<зона доступности>"
      security_group_ids  = ["<список идентификаторов групп безопасности>"]
      deletion_protection = <защита от удаления кластера: true или false>
    
      cluster_config {
        version_id = "<версия образа>"
    
        hadoop {
          services   = ["<список компонентов>"]
          # пример списка: ["HDFS", "YARN", "SPARK", "TEZ", "MAPREDUCE", "HIVE"]
          properties = {
            "<свойство компонента>" = <значение>
            ...
          }
          ssh_public_keys = [
            file("${file("<путь к файлу публичной части SSH-ключа>")}")
          ]
        }
    
        subcluster_spec {
          name = "<имя подкластера с управляющим хостом>"
          role = "MASTERNODE"
          resources {
            resource_preset_id = "<класс хоста>"
            disk_type_id       = "<тип хранилища>"
            disk_size          = <объем хранилища, ГБ>
          }
          subnet_id   = "<идентификатор подсети в Terraform>"
          hosts_count = 1
        }
    
        subcluster_spec {
          name = "<имя подкластера для хранения данных>"
          role = "DATANODE"
          resources {
            resource_preset_id = "<класс хоста>"
            disk_type_id       = "<тип хранилища>"
            disk_size          = <объем хранилища, ГБ>
          }
          subnet_id   = "<идентификатор подсети в Terraform>"
          hosts_count = <число хостов в подкластере>
        }
    
        subcluster_spec {
          name = "<имя подкластера для обработки данных>"
          role = "COMPUTENODE"
          resources {
            resource_preset_id = "<класс хоста>"
            disk_type_id       = "<тип хранилища>"
            disk_size          = <объем хранилища, ГБ>
          }
          subnet_id   = "<идентификатор подсети в Terraform>"
          hosts_count = <число хостов в подкластере>
        }
      }
    }
    

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

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

    Совет

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

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

    resource "yandex_dataproc_cluster" "<имя кластера в Terraform>" {
      ...
      ui_proxy = <включить опцию UI Proxy: true или false>
      ...
    }
    

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

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

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

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

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

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

      terraform validate
      

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

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

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

      terraform plan
      

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

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

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

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

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

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

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

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

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

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

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

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

      Совет

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

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

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

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

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

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

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

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

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

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

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

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

Внимание

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

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

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

Примеры

Создание легковесного кластера для заданий Spark и PySpark

CLI

Создайте кластер Data Proc для выполнения заданий Spark без HDFS и подкластеров для хранения данных с тестовыми характеристиками:

  • С именем my-dataproc.

  • С бакетом dataproc-bucket.

  • В зоне доступности ru-central1-c.

  • С сервисным аккаунтом dataproc-sa.

  • Образом версии 2.0.

  • С компонентами SPARK и YARN.

  • С путем к публичной части SSH-ключа /home/username/.ssh/id_rsa.pub.

  • С подкластером с управляющими хостами master и одним подкластером для обработки данных compute:

    • Класса s2.micro.
    • С хранилищем на сетевых SSD-дисках (network-ssd) объемом 20 ГБ.
    • В подсети default-ru-central1-c.
    • С публичным доступом.
  • В группе безопасности enp6saqnq4ie244g67sb.

  • С защитой от случайного удаления кластера.

Выполните следующую команду:

yc dataproc cluster create my-dataproc \
   --bucket=dataproc-bucket \
   --zone=ru-central1-c \
   --service-account-name=dataproc-sa \
   --version=2.0 \
   --services=SPARK,YARN \
   --ssh-public-keys-file=/home/username/.ssh/id_rsa.pub \
   --subcluster name="master",`
               `role=masternode,`
               `resource-preset=s2.micro,`
               `disk-type=network-ssd,`
               `disk-size=20,`
               `subnet-name=default-ru-central1-c,`
               `assign-public-ip=true \
   --subcluster name="compute",`
               `role=computenode,`
               `resource-preset=s2.micro,`
               `disk-type=network-ssd,`
               `disk-size=20,`
               `subnet-name=default-ru-central1-c,`
               `assign-public-ip=true \
   --security-group-ids=enp6saqnq4ie244g67sb \
   --deletion-protection=true

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

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Настройте сеть
  • Настройте группы безопасности
  • Создайте кластер
  • Примеры
  • Создание легковесного кластера для заданий Spark и PySpark