Как прекратить кластер dataproc, когда он не используется?

У меня есть система, которая принимает задания от пользователей. Эти задания выполняются как искровые задания в dataproc. Днем работает много рабочих мест, а ночью их может и не быть. Мне интересно, как лучше всего завершить кластер во время этих периодов простоя и либо перезапустить, либо заново создать кластер после получения нового задания? Цель здесь - не заряжаться в периоды бездействия.

2 ответа

Решение

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

  1. Уменьшите кластер до минимального количества работников (2 работника) [1]
  2. Удалить кластер и воссоздать его позже [2]

Оба подхода работают лучше всего, когда вы используете Google Cloud Storage Connector [3] вместо HDFS для хранения ваших данных.

Чтобы уменьшить масштаб вашего кластера, вы должны выполнить эту команду в непиковые часы:

gcloud dataproc clusters update <cluster-name> --num-workers <new-number-of-workers>

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

gcloud dataproc clusters delete my-dataproc-cluster-name

Потенциально вы можете снизить текущие расходы Dataproc на 70% с помощью Preemptible VM, которые полностью поддерживаются Dataproc.

[1] Масштабирование кластеров Dataproc

[2] Управление кластерами Dataproc

[3] Google Cloud Storage Connector для Spark / Hadoop

[4] Вытяжные ВМ

Dataproc теперь изначально поддерживает запланированное удаление кластера. Вы можете запланировать удаление кластеров в определенное время (например, в 7 часов вечера), или если они простаивали в течение определенного периода времени (например, 1 час).

Вы также можете проверить автоматическое масштабирование кластера.

https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/scheduled-deletion

Похоже, вы ищете параметр --max-idle, который можно использовать при создании кластера.

Из документов:

-max-idle: продолжительность с момента, когда кластер переходит в состояние ожидания, до момента, когда кластер начинает удалять. Укажите продолжительность в формате IntegerUnit, где единицами измерения могут быть "s, m, h, d" (секунды, минуты, часы, дни соответственно). Примеры: "30 минут" или "1 день" (30 минут или 1 день с момента простоя кластера). 1 секунда 10 минут 14 дней

--expiration-time: время начала удаления кластера в формате даты и времени ISO 8601. Простой способ сгенерировать дату и время в правильном формате - использовать Генератор отметок времени. Например, "2017-08-22T13:31:48-08:00" указывает время истечения 13:21:48 в часовом поясе UTC -8:00. 1 секунда 10 минут от текущего времени 14 дней от текущего времени

--max-age: время с момента отправки запроса на создание кластера до момента начала удаления кластера. Укажите продолжительность в формате IntegerUnit, где единицами измерения могут быть "s, m, h, d" (секунды, минуты, часы, дни соответственно). Примеры: "30 м" (через 30 минут); "1д" (через 1 день). 1

Другие вопросы по тегам