[Документация Yandex Cloud](../../index.md) > [Yandex Data Processing](../index.md) > [Пошаговые инструкции](index.md) > Подкластеры Yandex Data Processing > Управление подкластерами

# Управление подкластерами Yandex Data Processing

Помимо [изменения настроек](subcluster-update.md) отдельного подкластера вы можете создавать новые и удалять имеющиеся подкластеры.

{% note warning %}

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

{% endnote %}

## Получить список подкластеров в кластере {#list-subclusters}

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. Перейдите на [страницу каталога](https://console.yandex.cloud).
  1. Перейдите в сервис **Yandex Data Processing**.
  1. Нажмите на имя нужного кластера и выберите вкладку **Подкластеры**.

- CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

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

  ```bash
  yc dataproc subcluster list --cluster-name=<имя_кластера>
  ```

  Имя кластера можно получить со [списком кластеров в каталоге](cluster-list.md#list).

{% endlist %}

## Создать подкластер {#add-subcluster}

Количество хостов в кластерах Yandex Data Processing ограничено [квотами](https://kz.console.yandex.cloud/cloud?section=quotas) на количество vCPU и объем памяти, которые могут использовать виртуальные машины в вашем облаке. Чтобы увидеть доступные ресурсы, откройте раздел [Квоты](https://kz.console.yandex.cloud/cloud?section=quotas) и найдите блок **Compute Cloud**.

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. В [консоли управления](https://console.yandex.cloud) выберите нужный каталог.
  1. Перейдите в сервис **Yandex Data Processing** и выберите нужный кластер.
  1. Перейдите в раздел **Подкластеры**.
  1. Нажмите кнопку **Создать подкластер**.
  1. Укажите параметры подкластера:
     1. **Хосты** — выберите количество хостов.
     1. **Роли** — выберите роли подкластера в зависимости от того, какие сервисы должны быть развернуты на хостах:

         * `COMPUTENODE` — роль для обработки данных. В подкластерах с такой ролью могут быть развернуты YARN NodeManager и библиотеки Spark.
         * `DATANODE` — роль для хранения данных. В подкластерах с такой ролью могут быть развернуты YARN NodeManager и библиотеки Spark, а также HBase RegionServer и HDFS Datanode.

     1. В блоке [**Класс хоста**](../concepts/instance-types.md) — выберите платформу и вычислительные ресурсы, доступные хосту.
     1. В блоке **Размер хранилища** — укажите тип и размер хранилища.
     1. В блоке **Сетевые настройки**:

         * Выберите **Формат указания сети**.
         * Укажите **Подсеть** — подсеть сети, в которой расположен кластер.
         * (Опционально) Включите опцию **Публичный доступ** для доступа к хостам подкластера из интернета.

             Эту настройку невозможно изменить после создания подкластера.

             {% note tip %}

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

             {% endnote %}

     1. (Опционально) Включите опцию **Автоматическое масштабирование**.
  1. Нажмите кнопку **Добавить подкластер**.

- CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

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

     ```bash
     yc dataproc subcluster create --help
     ```

  1. Укажите параметры подкластера в команде создания (в примере приведены не все доступные параметры):

     ```bash
     yc dataproc subcluster create <имя_подкластера> \
       --cluster-name=<имя_кластера> \
       --role=<роль_подкластера> \
       --resource-preset=<класс_хоста> \
       --disk-type=<тип_хранилища> \
       --disk-size=<размер_хранилища_ГБ> \
       --subnet-name=<имя_подсети> \
       --hosts-count=<количество_хостов>
     ```

     Где:
     * `--cluster-name` — имя кластера. Имя кластера можно получить со [списком кластеров в каталоге](cluster-list.md#list).
     * `--role` — роль подкластера: `datanode` или `computenode`.
     * `--resource-preset` — [класс хостов](../concepts/instance-types.md).
     * `--disk-type` — [тип хранилища](../concepts/storage.md): `network-ssd`, `network-hdd` или `network-ssd-nonreplicated`.
     * `--disk-size` — размер хранилища в гигабайтах.
     * `--subnet-name` — [имя подсети](../../vpc/concepts/network.md#subnet).
     * `--hosts-count` — количество хостов подкластера. Минимальное значение — `1`, максимальное — `32`.

- Terraform {#tf}

  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

     Инструкция по созданию файла описана в разделе [Создание кластера](cluster-create.md).
  1. Добавьте в описании кластера Yandex Data Processing блок `subcluster_spec` с параметрами нового подкластера:

     ```hcl
     resource "yandex_dataproc_cluster" "data_cluster" {
       ...
       cluster_config {
         ...
         subcluster_spec {
           name = "<имя_подкластера>"
           role = "<роль_подкластера>"
           resources {
             resource_preset_id = "<класс_хоста>"
             disk_type_id       = "<тип_хранилища>"
             disk_size          = <объем_хранилища_ГБ>
           }
           subnet_id   = "<идентификатор_подсети>"
           hosts_count = <число_хостов_в_подкластере>
           ...
         }
       }
     }
     ```

     Где `role` — роль подкластера: `COMPUTENODE` или `DATANODE`.

  1. Проверьте корректность настроек.

     1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
     1. Выполните команду:
     
        ```bash
        terraform validate
        ```
     
        Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  1. Подтвердите изменение ресурсов.

     1. Выполните команду для просмотра планируемых изменений:
     
        ```bash
        terraform plan
        ```
     
        Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
     
     1. Если вас устраивают планируемые изменения, внесите их:
        1. Выполните команду:
     
           ```bash
           terraform apply
           ```
     
        1. Подтвердите изменение ресурсов.
        1. Дождитесь завершения операции.

  Более подробная информация о ресурсах, которые вы можете создать с помощью Terraform, описана в [документации провайдера](../../terraform/resources/dataproc_cluster.md).

{% endlist %}

## Удалить подкластер {#remove-host}

{% note warning %}

Удалить подкластеры для хранения данных невозможно.

{% endnote %}

{% list tabs group=instructions %}

- Консоль управления {#console}

  Чтобы удалить подкластер:
  1. В [консоли управления](https://console.yandex.cloud) выберите нужный каталог.
  1. Перейдите в сервис **Yandex Data Processing** и выберите нужный кластер.
  1. Перейдите в раздел **Подкластеры**.
  1. Нажмите на значок ![image](../../_assets/console-icons/ellipsis.svg) для нужного подкластера и выберите пункт **Удалить**.
  1. (Опционально) Укажите таймаут [декомиссии](../concepts/decommission.md).
  1. В открывшемся окне нажмите кнопку **Удалить**.

- CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

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

  ```bash
  yc dataproc subcluster delete <имя_или_идентификатор_подкластера> \
    --cluster-name=<имя_кластера>
  ```

  Идентификатор и имя подкластера можно получить со [списком подкластеров в кластере](#list-subclusters), имя кластера — со [списком кластеров в каталоге](cluster-list.md#list).

- Terraform {#tf}

  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

     Инструкция по созданию файла описана в разделе [Создание кластера](cluster-create.md).
  1. Удалите из описания кластера Yandex Data Processing блок `subcluster_spec` нужного подкластера.
  1. Проверьте корректность настроек.

     1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
     1. Выполните команду:
     
        ```bash
        terraform validate
        ```
     
        Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  1. Введите слово `yes` и нажмите **Enter**.

     1. Выполните команду для просмотра планируемых изменений:
     
        ```bash
        terraform plan
        ```
     
        Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
     
     1. Если вас устраивают планируемые изменения, внесите их:
        1. Выполните команду:
     
           ```bash
           terraform apply
           ```
     
        1. Подтвердите изменение ресурсов.
        1. Дождитесь завершения операции.

  Более подробная информация о ресурсах, которые вы можете создать с помощью Terraform, описана в [документации провайдера](../../terraform/resources/dataproc_cluster.md).

{% endlist %}