Как прекратить кластер dataproc, когда он не используется?
У меня есть система, которая принимает задания от пользователей. Эти задания выполняются как искровые задания в dataproc. Днем работает много рабочих мест, а ночью их может и не быть. Мне интересно, как лучше всего завершить кластер во время этих периодов простоя и либо перезапустить, либо заново создать кластер после получения нового задания? Цель здесь - не заряжаться в периоды бездействия.
2 ответа
Вы можете использовать любой из двух основных подходов:
- Уменьшите кластер до минимального количества работников (2 работника) [1]
- Удалить кластер и воссоздать его позже [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