Создание кластера Data Proc
Для создания кластера Data Proc пользователю должны быть назначены роли editor
и dataproc.agent
. Подробнее см. в описании ролей.
Настройте сеть
Настройте доступ в интернет из подсети, к которой будет подключен подкластер Data Proc с хостом-мастером, например при помощи NAT-шлюза. Это необходимо, чтобы подкластер Data Proc мог взаимодействовать с сервисами Yandex Cloud или хостами в других сетях.
Настройте группы безопасности
Важно
Группы безопасности необходимо создать и настроить перед созданием кластера Data Proc. Если в выбранных группах безопасности не будет необходимых правил, Yandex Cloud заблокирует создание кластера Data Proc.
- Создайте одну или несколько групп безопасности для служебного трафика кластера Data Proc.
- Добавьте правила:
-
По одному правилу для входящего и исходящего служебного трафика:
- Диапазон портов —
0-65535
. - Протокол —
Любой
. - Источник/Назначение —
Группа безопасности
. - Группа безопасности —
Текущая
.
- Диапазон портов —
-
Отдельное правило для исходящего HTTPS-трафика. Это позволит использовать бакеты Yandex Object Storage, UI Proxy и автоматическое масштабирование кластеров Data Proc.
Вы можете настроить это правило одним из двух способов:
На все адресаНа адреса, используемые Yandex Cloud- Диапазон портов —
443
. - Протокол —
TCP
. - Назначение —
CIDR
. - CIDR блоки —
0.0.0.0/0
.
- Диапазон портов —
443
. - Протокол —
TCP
. - Назначение —
CIDR
. - CIDR блоки:
84.201.181.26/32
— получение статуса кластера Data Proc, запуск заданий, UI Proxy.158.160.59.216/32
— мониторинг состояния кластера Data Proc, автомасштабирование.213.180.193.243/32
— доступ к Object Storage.
- Диапазон портов —
-
Правило, разрешающее доступ к NTP-серверам для синхронизации времени:
- Диапазон портов —
123
. - Протокол —
UDP
. - Назначение —
CIDR
. - CIDR блоки —
0.0.0.0/0
.
- Диапазон портов —
-
Если планируется использовать несколько групп безопасности для кластера Data Proc, разрешите весь трафик между этими группами.
Примечание
Вы можете задать более детальные правила для групп безопасности, например, разрешающие трафик только в определенных подсетях.
Группы безопасности должны быть корректно настроены для всех подсетей, в которых будут размещены хосты кластера Data Proc.
Вы можете настроить группы безопасности после создания кластера Data Proc, чтобы подключиться к Metastore или хостам кластера Data Proc через интернет или промежуточную виртуальную машину.
Создайте кластер Data Proc
Кластер Data Proc должен состоять из подкластера с хостом-мастером и как минимум из одного подкластера для хранения или обработки данных.
Если вы хотите создать копию кластера Data Proc, импортируйте его конфигурацию в Terraform.
-
В консоли управления
выберите каталог, в котором нужно создать кластер Data Proc. -
Нажмите кнопку Создать ресурс и выберите
Кластер Data Proc в выпадающем списке. -
Введите имя кластера Data Proc в поле Имя кластера. Требования к имени:
- Должно быть уникальным в рамках каталога.
- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
Выберите подходящую версию образа и сервисы, которые вы хотите использовать в кластере Data Proc.
Используя образ версии
2.0.39
или выше, вы можете создать легковесный кластер без HDFS и подкластеров для хранения данных. При этом обязательно добавьте один или несколько подкластеров для обработки данных и укажите имя бакета.Совет
Чтобы использовать самую свежую версию образа, укажите значение
2.0
. -
Вставьте в поле SSH-ключ публичную часть вашего SSH-ключа. Как сгенерировать и использовать SSH-ключи, читайте в документации Yandex Compute Cloud.
-
Выберите или создайте сервисный аккаунт, которому нужно разрешить доступ к кластеру Data Proc. Сервисному аккаунту кластера Data Proc должна быть назначена роль
dataproc.agent
. -
Выберите зону доступности для кластера Data Proc.
-
При необходимости задайте свойства компонентов кластера Data Proc, заданий и среды окружения.
-
При необходимости укажите пользовательские скрипты инициализации хостов кластера Data Proc. Для каждого скрипта укажите:
-
URI — ссылка на скрипт инициализации в схеме
https://
,http://
,hdfs://
илиs3a://
. -
(Опционально) Таймаут — таймаут (в секундах) выполнения скрипта. Скрипт инициализации, выполняющийся дольше указанного времени, будет прерван.
-
(Опционально) Аргументы — заключенные в квадратные скобки
[]
и разделенные запятыми аргументы, с которыми должен быть выполнен скрипт инициализации, например:["arg1","arg2",...,"argN"]
-
-
Выберите имя бакета в Object Storage, в котором будут храниться зависимости заданий и результаты их выполнения.
-
Выберите сеть для кластера Data Proc.
-
Выберите группы безопасности, в которых имеются необходимые разрешения.
Важно
При создании кластера Data Proc проверяются настройки групп безопасности. Если функционирование кластера Data Proc с этими настройками невозможно, будет выведено предупреждение. Пример работающих настроек приведен выше.
-
Включите опцию UI Proxy, чтобы получить доступ к веб-интерфейсам компонентов Data Proc.
-
Логи кластера Data Proc сохраняются в сервисе Yandex Cloud Logging. Выберите нужную лог-группу из списка или создайте новую.
Для работы этой функции назначьте сервисному аккаунту кластера Data Proc роль
logging.writer
. Подробнее см. в документации Cloud Logging. -
Настройте подкластеры Data Proc: не больше одного подкластера с хостом-мастером (обозначается как Мастер), и подкластеры для хранения или обработки данных.
Роли подкластеров Data Proc для хранения и обработки данных различаются тем, что на подкластерах для хранения данных можно разворачивать компоненты для хранения, а для обработки — компоненты для вычислений. Хранилище на подкластере Data Proc для обработки данных предназначено только для временного хранения обрабатываемых файлов.
Для каждого подкластера Data Procможно настроить:
-
Количество хостов.
-
Класс хостов — платформа и вычислительные ресурсы, доступные хосту.
-
Размер и тип хранилища.
-
Подсеть сети, в которой расположен кластер Data Proc.
В подсети для подкластера Data Proc с хостом-мастером нужно настроить NAT-шлюз. Подробнее см. в разделе Настройте сеть.
-
Для доступа к хостам подкластера Data Proc из интернета выберите опцию Публичный доступ. В этом случае подключаться к хостам подкластера Data Proc можно только с использованием SSL-соединения. Подробнее см. в разделе Подключение к кластеру Data Proc.
Важно
После создания кластера Data Proc невозможно запросить или отключить публичный доступ к подкластеру. Однако подкластер Data Proc для обработки данных можно удалить и создать заново с нужной настройкой публичного доступа.
-
-
В подкластерах Data Proc для обработки данных можно задать параметры автоматического масштабирования.
Примечание
Для работы автоматического масштабирования необходимо выдать следующие роли сервисному аккаунту кластера:
dataproc.editor
;dataproc.agent
.
- В блоке Добавить подкластер нажмите кнопку Добавить.
- В поле Роли выберите
COMPUTENODE
. - В блоке Масштабирование включите настройку Автоматическое масштабирование.
- Задайте параметры автоматического масштабирования.
- По умолчанию в качестве метрики для автоматического масштабирования используется
yarn.cluster.containersPending
. Чтобы включить масштабирование на основе загрузки CPU, выключите настройку Масштабирование по умолчанию и укажите целевой уровень загрузки CPU. - Нажмите кнопку Добавить.
-
При необходимости задайте дополнительные настройки кластера Data Proc:
Защита от удаления — управляет защитой кластера Data Proc от непреднамеренного удаления пользователем.Включенная защита не помешает подключиться к кластеру Data Proc вручную и удалить данные.
-
Нажмите кнопку Создать кластер.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы создать кластер Data Proc:
-
Проверьте, есть ли в каталоге подсети для хостов кластера Data Proc:
yc vpc subnet list
Если ни одной подсети в каталоге нет, создайте нужные подсети в сервисе Yandex Virtual Private Cloud.
-
Посмотрите описание команды CLI для создания кластера Data Proc:
yc dataproc cluster create --help
-
Укажите параметры кластера Data Proc в команде создания (в примере приведены не все доступные параметры):
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=<список_идентификаторов_групп_безопасности>
Примечание
Имя кластера Data Proc должно быть уникальным в рамках каталога. Может содержать латинские буквы, цифры, дефис и нижнее подчеркивание. Максимальная длина имени 63 символа.
Где:
-
--bucket
— имя бакета в Object Storage, в котором будут храниться зависимости заданий и результаты их выполнения. Сервисный аккаунт кластера Data Proc должен иметь разрешениеREAD и WRITE
для этого бакета. -
--zone
— зона доступности, в которой должны быть размещены хосты кластера Data Proc. -
--service-account-name
— имя сервисного аккаунта кластера Data Proc. Сервисному аккаунту кластера Data Proc должна быть назначена рольdataproc.agent
. -
--version
— версия образа.Используя образ версии
2.0.39
или выше, вы можете создать легковесный кластер без HDFS и подкластеров для хранения данных. При этом обязательно добавьте один или несколько подкластеров для обработки данных и укажите имя бакета.Совет
Чтобы использовать самую свежую версию образа, укажите значение
2.0
в параметре--version
. -
--services
— список компонентов, которые вы хотите использовать в кластере Data Proc. Если не указать этот параметр, будет использоваться набор по умолчанию:hdfs
,yarn
,mapreduce
,tez
,spark
. -
--ssh-public-keys-file
— полный путь к файлу с публичной частью SSH-ключа, который будет использоваться для доступа к хостам кластера Data Proc. Как создать и использовать SSH-ключи, читайте в документации Yandex Compute Cloud. -
--subcluster
— параметры подкластеров Data Proc:-
name
— имя подкластера Data Proc. -
role
— роль подкластера Data Proc:masternode
,datanode
илиcomputenode
. -
resource-preset
— класс хостов. -
disk-type
— тип хранилища:network-ssd
,network-hdd
илиnetwork-ssd-nonreplicated
. -
disk-size
— размер хранилища в гигабайтах. -
subnet-name
— имя подсети. -
hosts-count
— количество хостов подкластеров Data Proc для хранения или обработки данных. Минимальное значение —1
, максимальное —32
. -
assign-public-ip
— доступ к хостам подкластера Data Proc из интернета. Может принимать значенияtrue
илиfalse
. Если доступ включен, подключаться к кластеру Data Proc можно только с использованием SSL-соединения. Подробнее см. в разделе Подключение к кластеру Data Proc.Важно
После создания кластера Data Proc невозможно запросить или отключить публичный доступ к подкластеру. Однако подкластер Data Proc для обработки данных можно удалить и создать заново с нужной настройкой публичного доступа.
-
-
--deletion-protection
— защита от удаления кластера Data Proc. Может принимать значенияtrue
илиfalse
.Включенная защита от удаления кластера не помешает подключиться к нему вручную и удалить данные.
-
--ui-proxy
— доступ к веб-интерфейсам компонентов Data Proc. Может принимать значенияtrue
илиfalse
. -
--log-group-id
— идентификатор лог-группы. -
--security-group-ids
— список идентификаторов групп безопасности.
Чтобы создать кластер Data Proc, состоящих из нескольких подкластеров для хранения или обработки данных, передайте необходимое количество аргументов
--subcluster
в команде создания кластера:yc dataproc cluster create <имя_кластера> \ ... --subcluster <параметры_подкластера> \ --subcluster <параметры_подкластера> \ ...
-
-
Чтобы включить автоматическое масштабирование в подкластерах Data Proc для обработки данных, задайте параметры:
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
— минимальное количество хостов (ВМ) в подкластере Data Proc. Минимальное значение —1
, максимальное —32
.max-hosts-count
— максимальное количество хостов (ВМ) в подкластере Data Proc. Минимальное значение —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
(сутки).
Примечание
Для работы автоматического масштабирования необходимо выдать следующие роли сервисному аккаунту кластера:
dataproc.editor
;dataproc.agent
.
-
Чтобы создать кластер Data Proc, размещенный на группах выделенных хостов, укажите через запятую их идентификаторы в параметре
--host-group-ids
:yc dataproc cluster create <имя_кластера> \ ... --host-group-ids=<идентификаторы_групп_выделенных_хостов>
Внимание
Эту настройку нельзя изменить после создания кластера. Использование выделенных хостов существенно влияет на тарификацию кластера.
-
Чтобы настроить хосты кластера Data Proc с помощью скриптов инициализации, укажите их в одном или нескольких параметрах
--initialization-action
:yc dataproc cluster create <имя_кластера> \ ... --initialization-action uri=<URI_скрипта_инициализации>,` `timeout=<таймаут_выполнения_скрипта>,` `args=["arg1","arg2","arg3",...]
Где:
uri
— ссылка на скрипт инициализации в схемеhttps://
,http://
,hdfs://
илиs3a://
.- (Опционально)
timeout
— таймаут выполнения скрипта, в секундах. Скрипт инициализации, выполняющийся дольше указанного времени, будет прерван. - (Опционально)
args
— разделенные запятыми аргументы, с которыми должен быть выполнен скрипт инициализации.
Terraform
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.
Чтобы создать кластер Data Proc:
-
В командной строке перейдите в каталог, в котором будут расположены конфигурационные файлы Terraform с планом инфраструктуры. Если такой директории нет — создайте ее.
-
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Создайте конфигурационный файл с описанием облачной сети и подсетей.
Кластер Data Proc размещается в облачной сети. Если подходящая сеть у вас уже есть, описывать ее повторно не нужно.
Хосты кластера Data Proc размещаются в подсетях выбранной облачной сети. Если подходящие подсети у вас уже есть, описывать их повторно не нужно.
Пример структуры конфигурационного файла, в котором описывается облачная сеть с одной подсетью:
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 = ["<подсеть>"] }
-
Создайте конфигурационный файл с описанием сервисного аккаунта, которому нужно разрешить доступ к кластеру Data Proc, а также статического ключа и бакета Object Storage для хранения заданий и результатов.
resource "yandex_iam_service_account" "data_proc_sa" { name = "<имя_сервисного_аккаунта>" description = "<описание_сервисного_аккаунта>" } resource "yandex_resourcemanager_folder_iam_member" "dataproc" { folder_id = "<идентификатор_каталога>" role = "dataproc.agent" member = "serviceAccount:${yandex_iam_service_account.data_proc_sa.id}" } resource "yandex_resourcemanager_folder_iam_member" "bucket-creator" { folder_id = "<идентификатор_каталога>" role = "dataproc.editor" member = "serviceAccount:${yandex_iam_service_account.data_proc_sa.id}" } resource "yandex_iam_service_account_static_access_key" "sa_static_key" { service_account_id = yandex_iam_service_account.data_proc_sa.id } resource "yandex_storage_bucket" "data_bucket" { depends_on = [ yandex_resourcemanager_folder_iam_member.bucket-creator ] bucket = "<имя_бакета>" access_key = yandex_iam_service_account_static_access_key.sa_static_key.access_key secret_key = yandex_iam_service_account_static_access_key.sa_static_key.secret_key }
-
Создайте конфигурационный файл с описанием кластера Data Proc и его подкластеров.
При необходимости здесь же можно задать свойства компонентов кластера Data Proc, заданий и среды окружения.
Пример структуры конфигурационного файла, в котором описывается кластер Data Proc из одного подкластера с хостом-мастером, одного подкластера для хранения данных и одного подкластера для обработки данных:
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
— защита от удаления кластера Data Proc. Может принимать значенияtrue
илиfalse
.Включенная защита от удаления не помешает подключиться вручную и удалить содержимое базы данных.
Используя образ версии
2.0.39
или выше, вы можете создать легковесный кластер без HDFS и подкластеров для хранения данных. При этом обязательно добавьте один или несколько подкластеров для обработки данных и укажите имя бакета.Совет
Чтобы использовать самую свежую версию образа, укажите значение
2.0
в параметреversion_id
.Чтобы получить доступ к веб-интерфейсам компонентов Data Proc, добавьте в описание кластера Data Proc поле
ui_proxy
с значениемtrue
:resource "yandex_dataproc_cluster" "data_cluster" { ... ui_proxy = true ... }
Чтобы задать параметры автоматического масштабирования в подкластерах Data Proc для обработки данных, добавьте в описание соответствующего подкластера
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
— максимальное количество хостов (ВМ) в подкластере Data Proc. Минимальное значение —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 на них укажет.
-
-
Создайте кластер Data Proc:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Чтобы создать кластер Data Proc, воспользуйтесь методом API create и передайте в запросе:
-
Идентификатор каталога, в котором должен быть размещен кластера Data Proc, в параметре
folderId
. -
Имя кластера Data Proc в параметре
name
. -
Конфигурацию кластера Data Proc в параметре
configSpec
, в том числе:-
Версию образа в параметре
configSpec.versionId
.Используя образ версии
2.0.39
или выше, вы можете создать легковесный кластер без HDFS и подкластеров для хранения данных. При этом обязательно добавьте один или несколько подкластеров для обработки данных и укажите имя бакета.Совет
Чтобы использовать самую свежую версию образа, укажите значение
2.0
. -
Список компонентов в параметре
configSpec.hadoop.services
. -
Публичную часть SSH-ключа в параметре
configSpec.hadoop.sshPublicKeys
. -
Настройки подкластеров Data Proc в параметре
configSpec.subclustersSpec
.
-
-
Зону доступности кластера Data Proc в параметре
zoneId
. -
Идентификатор сервисного аккаунта кластера Data Proc в параметре
serviceAccountId
. -
Имя бакета в параметре
bucket
. -
Идентификаторы групп безопасности кластера Data Proc в параметре
hostGroupIds
. -
Настройки защиты от удаления кластера Data Proc в параметре
deletionProtection
.Включенная защита от удаления кластера не помешает подключиться к нему вручную и удалить данные.
Чтобы назначить публичный IP-адрес всем хостам подкластера Data Proc, передайте значение true
в параметре configSpec.subclustersSpec.assignPublicIp
.
Чтобы создать кластер Data Proc, размещенный на группах выделенных хостов, передайте список их идентификаторов в параметре hostGroupIds
.
Внимание
Эту настройку нельзя изменить после создания кластера. Использование выделенных хостов существенно влияет на тарификацию кластера.
Чтобы настроить хосты кластера Data Proc с помощью скриптов инициализации, укажите их в одном или нескольких параметрах configSpec.hadoop.initializationActions
.
После того как кластер Data Proc перейдет в статус Running, вы можете подключиться к хостам подкластеров Data Proc с помощью указанного SSH-ключа.
Создайте копию кластера Data Proc
Вы можете создать кластер Data Proc, который будет обладать настройками созданного ранее кластера. Для этого конфигурация исходного кластера Data Proc импортируется в Terraform. В результате вы можете либо создать идентичную копию, либо взять за основу импортированную конфигурацию и внести в нее изменения. Использовать импорт удобно, если исходный кластер Data Proc обладает множеством настроек (например, это кластер с файловой системой HDFS) и нужно создать похожий на него кластер.
Чтобы создать копию кластера Data Proc:
-
Если у вас еще нет Terraform, установите его.
-
Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.
-
Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.
-
В той же рабочей директории разместите файл с расширением
.tf
и содержимым:resource "yandex_dataproc_cluster" "old" { }
-
Запишите идентификатор первоначального кластера Data Proc в переменную окружения:
export DATAPROC_CLUSTER_ID=<идентификатор_кластера>
Идентификатор можно запросить вместе со списком кластеров в каталоге.
-
Импортируйте настройки первоначального кластера Data Proc в конфигурацию Terraform:
terraform import yandex_dataproc_cluster.old ${DATAPROC_CLUSTER_ID}
-
Получите импортированную конфигурацию:
terraform show
-
Скопируйте ее из терминала и вставьте в файл с расширением
.tf
. -
Расположите файл в новой директории
imported-cluster
. -
Измените скопированную конфигурацию так, чтобы из нее можно было создать новый кластер Data Proc:
-
Укажите новое имя кластера Data Proc в строке
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
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Пример
Создание легковесного кластера Data Proc для заданий Spark и PySpark
Создайте кластер Data Proc для выполнения заданий Spark без HDFS и подкластеров для хранения данных с тестовыми характеристиками:
- С именем
my-dataproc
. - С бакетом
dataproc-bucket
. - В зоне доступности
ru-central1-d
. - С сервисным аккаунтом
dataproc-sa
. - Образом версии
2.0
. - С компонентами
SPARK
иYARN
. - С путем к публичной части SSH-ключа
/home/username/.ssh/id_rsa.pub
. - С подкластером Data Proc с хостами-мастерами
master
и одним подкластером для обработки данныхcompute
:- Класса
s2.micro
. - С хранилищем на сетевых SSD-дисках (
network-ssd
) объемом 20 ГБ. - В подсети
default-ru-central1-d
. - С публичным доступом.
- Класса
- В группе безопасности
enp6saqnq4ie********
. - С защитой от случайного удаления кластера Data Proc.
Выполните следующую команду:
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=true