Создание кластера 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.
Настройте сеть
Настройте доступ в интернет из подсети, к которой будет подключен подкластер Yandex Data Processing с хостом-мастером, например при помощи NAT-шлюза. Это необходимо, чтобы подкластер Yandex Data Processing мог взаимодействовать с сервисами Yandex Cloud или хостами в других сетях.
Настройте группы безопасности
Важно
Группы безопасности необходимо создать и настроить перед созданием кластера Yandex Data Processing. Если в выбранных группах безопасности не будет необходимых правил, Yandex Cloud заблокирует создание кластера Yandex Data Processing.
- Создайте одну или несколько групп безопасности для служебного трафика кластера Yandex Data Processing.
- Добавьте правила:
-
По одному правилу для входящего и исходящего служебного трафика:
- Диапазон портов —
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, импортируйте его конфигурацию в Terraform.
-
В консоли управления
выберите каталог, в котором нужно создать кластер Yandex Data Processing. -
Нажмите кнопку Создать ресурс и выберите
Кластер Yandex Data Processing в выпадающем списке. -
Укажите имя и при необходимости описание кластера Yandex Data Processing.
Требования к имени:
- должно быть уникальным в рамках каталога;
- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
Добавьте или удалите метки кластера. Они позволяют разделить и сгруппировать ресурсы на логические группы.
-
Задайте следующие настройки кластера:
-
Версия образа и сервисы, которые вы хотите использовать в кластере 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.
-
Сеть для кластера.
-
Группы безопасности, в которых имеются необходимые разрешения.
Важно
При создании кластера Yandex Data Processing проверяются настройки групп безопасности. Если функционирование кластера Yandex Data Processing с этими настройками невозможно, будет выведено предупреждение. Пример работающих настроек приведен выше.
-
UI Proxy. Если опция UI Proxy включена, будут доступны веб-интерфейсы компонентов Yandex Data Processing.
-
Лог-группа Yandex Cloud Logging, в которую кластер будет отправлять логи.
Чтобы сохранять логи в лог-группе, назначьте сервисному аккаунту кластера роль
logging.writer
.
-
-
Настройте подкластеры 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 для обработки данных можно удалить и создать заново с нужной настройкой публичного доступа.
- Подкластер с хостом-мастером, обозначается как
-
(Опционально) Настройте автоматическое масштабирование подкластеров для обработки данных:
- В настройках подкластера типа
Compute
включите настройку Автоматическое масштабирование. - Задайте параметры автоматического масштабирования.
- По умолчанию в качестве метрики для автоматического масштабирования используется
yarn.cluster.containersPending
. Чтобы включить масштабирование на основе загрузки CPU, выключите настройку Масштабирование по умолчанию и укажите целевой уровень загрузки CPU. - Нажмите кнопку Добавить.
- В настройках подкластера типа
-
(Опционально) Добавьте и настройте дополнительные подкластеры для хранения или обработки данных.
-
(Опционально) В дополнительных настройках включите защиту от непреднамеренного удаления кластера.
Включенная защита не помешает подключиться к кластеру Yandex Data Processing вручную и удалить данные.
-
Нажмите кнопку Создать кластер.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы создать кластер Yandex Data Processing:
-
Проверьте, есть ли в каталоге подсети для хостов кластера Yandex Data Processing:
yc vpc subnet list
Если ни одной подсети в каталоге нет, создайте нужные подсети в сервисе Yandex Virtual Private Cloud.
-
Посмотрите описание команды CLI для создания кластера Yandex Data Processing:
yc dataproc cluster create --help
-
Укажите параметры кластера Yandex Data Processing в команде создания (в примере приведены не все доступные параметры):
yc dataproc cluster create <имя_кластера> \ --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 символа.
Где:
-
--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 <параметры_подкластера> \ ...
-
-
Чтобы включить автоматическое масштабирование в подкластерах 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
(сутки).
-
Чтобы создать кластер Yandex Data Processing, размещенный на группах выделенных хостов, укажите через запятую их идентификаторы в параметре
--host-group-ids
:yc dataproc cluster create <имя_кластера> \ ... --host-group-ids=<идентификаторы_групп_выделенных_хостов>
Внимание
Эту настройку нельзя изменить после создания кластера. Использование выделенных хостов существенно влияет на тарификацию кластера.
-
Чтобы настроить хосты кластера 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
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Чтобы создать кластер Yandex Data Processing:
-
В командной строке перейдите в каталог, в котором будут расположены конфигурационные файлы Terraform с планом инфраструктуры. Если такой директории нет — создайте ее.
-
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Создайте конфигурационный файл с описанием облачной сети и подсетей.
Кластер Yandex Data Processing размещается в облачной сети. Если подходящая сеть у вас уже есть, описывать ее повторно не нужно.
Хосты кластера Yandex Data Processing размещаются в подсетях выбранной облачной сети. Если подходящие подсети у вас уже есть, описывать их повторно не нужно.
Пример структуры конфигурационного файла, в котором описывается облачная сеть с одной подсетью:
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 = ["<подсеть>"] }
-
Создайте конфигурационный файл с описанием следующих ресурсов:
- Сервисный аккаунт, которому нужно разрешить доступ к кластеру Yandex Data Processing.
- Сервисный аккаунт для создания бакета 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-editor" { folder_id = "<идентификатор_каталога>" role = "storage.editor" 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-editor ] 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 }
-
Создайте конфигурационный файл с описанием кластера Yandex Data Processing и его подкластеров.
При необходимости здесь же можно задать свойства компонентов кластера Yandex Data Processing, заданий и среды окружения.
Пример структуры конфигурационного файла, в котором описывается кластер Yandex Data Processing из одного подкластера с хостом-мастером, одного подкластера для хранения данных и одного подкластера для обработки данных:
resource "yandex_dataproc_cluster" "data_cluster" { bucket = "<имя_бакета>" name = "<имя_кластера>" description = "<описание_кластера>" service_account_id = yandex_iam_service_account.data_proc_sa.id zone_id = "<зона_доступности>" security_group_ids = ["<список_идентификаторов_групп_безопасности>"] deletion_protection = <защита_от_удаления_кластера> 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 = 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, см. в документации провайдера
. -
Проверьте корректность файлов конфигурации Terraform:
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Создайте кластер Yandex Data Processing:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Чтобы создать кластер Yandex Data Processing, воспользуйтесь методом API create и передайте в запросе:
-
Идентификатор каталога, в котором должен быть размещен кластера Yandex Data Processing, в параметре
folderId
. -
Имя кластера Yandex Data Processing в параметре
name
. -
Конфигурацию кластера 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-ключа.
Создайте копию кластера Yandex Data Processing
Вы можете создать кластер Yandex Data Processing, который будет обладать настройками созданного ранее кластера. Для этого конфигурация исходного кластера Yandex Data Processing импортируется в Terraform. В результате вы можете либо создать идентичную копию, либо взять за основу импортированную конфигурацию и внести в нее изменения. Использовать импорт удобно, если исходный кластер Yandex Data Processing обладает множеством настроек (например, это кластер с файловой системой HDFS) и нужно создать похожий на него кластер.
Чтобы создать копию кластера Yandex Data Processing:
-
Если у вас еще нет Terraform, установите его.
-
Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.
-
Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.
-
В той же рабочей директории разместите файл с расширением
.tf
и содержимым:resource "yandex_dataproc_cluster" "old" { }
-
Запишите идентификатор первоначального кластера Yandex Data Processing в переменную окружения:
export DATAPROC_CLUSTER_ID=<идентификатор_кластера>
Идентификатор можно запросить вместе со списком кластеров в каталоге.
-
Импортируйте настройки первоначального кластера Yandex Data Processing в конфигурацию Terraform:
terraform import yandex_dataproc_cluster.old ${DATAPROC_CLUSTER_ID}
-
Получите импортированную конфигурацию:
terraform show
-
Скопируйте ее из терминала и вставьте в файл с расширением
.tf
. -
Расположите файл в новой директории
imported-cluster
. -
Измените скопированную конфигурацию так, чтобы из нее можно было создать новый кластер Yandex Data Processing:
-
Укажите новое имя кластера Yandex Data Processing в строке
resource
и параметреname
. -
Удалите параметры
created_at
,host_group_ids
,id
иsubcluster_spec.id
. -
Измените формат SSH-ключа в параметре
ssh_public_keys
. Исходный формат:ssh_public_keys = [ <<-EOT <ключ> EOT, ]
Требуемый формат:
ssh_public_keys = [ "<ключ>" ]
-
(Опционально) Внесите дополнительные изменения, если вам нужна не идентичная, а кастомизированная копия.
-
-
В директории
imported-cluster
получите данные для аутентификации. -
В этой же директории настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в директорию
imported-cluster
и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле. -
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Пример
Создание легковесного кластера Yandex Data Processing для заданий Spark и PySpark
Создайте кластер Yandex Data Processing для выполнения заданий Spark без HDFS и подкластеров для хранения данных с тестовыми характеристиками:
- С именем
my-dataproc
. - С бакетом
dataproc-bucket
. - В зоне доступности
ru-central1-d
. - С сервисным аккаунтом
dataproc-sa
. - Образом версии
2.0
. - С компонентами
SPARK
иYARN
. - С путем к публичной части SSH-ключа
/home/username/.ssh/id_rsa.pub
. - С подкластером Yandex Data Processing с хостами-мастерами
master
и одним подкластером для обработки данныхcompute
:- Класса
s2.micro
. - С хранилищем на сетевых SSD-дисках (
network-ssd
) объемом 20 ГБ. - В подсети
default-ru-central1-d
. - С публичным доступом.
- Класса
- В группе безопасности
enp6saqnq4ie********
. - С защитой от случайного удаления кластера Yandex Data Processing.
Выполните следующую команду:
yc dataproc cluster create my-dataproc \
--bucket=dataproc-bucket \
--zone=ru-central1-d \
--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-d,`
`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-d,`
`assign-public-ip=true \
--security-group-ids=enp6saqnq4ie******** \
--deletion-protection