Arresto pianificato del cluster

Per evitare di incorrere Google Cloud in addebiti per un cluster inattivo o la necessità di eliminare e ricreare un cluster per evitare addebiti per il cluster , utilizza la funzionalità di arresto pianificato del cluster Dataproc, che arresta tutte le VM del cluster. Non ti vengono addebitati costi per le VM arrestate, ma gli addebiti continuano per le risorse associate, come i dischi permanenti.

L'arresto di un cluster arresta tutte le VM del cluster e causa l'errore di tutti i job in esecuzione. Quando un cluster viene arrestato, non puoi aggiornarlo, inviare job al cluster o accedere ai componenti facoltativi sul cluster utilizzando il gateway dei componenti di Dataproc. Dopo aver arrestato un cluster, puoi riavviare il cluster e riprendere il lavoro.

L'arresto pianificato del cluster è disponibile per i cluster creati con le versioni di immagine 2.2.42+, 2.1.76+ e 2.0.57+ e successive.

Funzionalità

  • Puoi arrestare i cluster dopo un periodo di inattività specificato, in un orario futuro specificato o dopo un periodo specificato dalla richiesta di creazione del cluster.

  • L'arresto pianificato del cluster supporta i cluster con worker secondari e i cluster con scalabilità a zero.

  • Puoi aggiornare o annullare la configurazione dell'arresto pianificato del cluster.

Limitazioni e considerazioni

  • L'arresto pianificato del cluster non è supportato per i cluster con SSD locali.
  • Non puoi impostare i valori di arresto pianificato del cluster utilizzando la Google Cloud console.
  • Anche se puoi aggiornare una configurazione di arresto pianificato del cluster, un operazione di arresto avviata continuerà. Per verificare se l'operazione di arresto è iniziata, esamina i log del cluster in Cloud Logging.
  • L'aggiornamento di una pianificazione di arresto su un cluster che ha superato l'ora di arresto pianificata rimuove la configurazione di arresto pianificata. Per riattivare l'arresto pianificato, includi un orario futuro nella richiesta di aggiornamento.

Azioni che disabilitano l'arresto pianificato del cluster

Mentre un cluster è in esecuzione, le seguenti azioni disabilitano l'arresto pianificato del cluster fino a quando l'azione di disabilitazione non viene annullata:

Calcolo del tempo di inattività del cluster

Affinché un cluster sia considerato inattivo, devono essere soddisfatte le seguenti condizioni:

  • La creazione del cluster è terminata (il tempo impiegato per il provisioning e l'avvio del cluster è escluso dal calcolo del tempo di inattività)
  • Nessun job è in esecuzione sul cluster
  • Il cluster non è in stato STOPPED

L'invio di un job al cluster o l'arresto di un cluster reimposta il calcolo del tempo di inattività.

La proprietà del cluster dataproc:dataproc.cluster-ttl.consider-yarn-activity influisce sul calcolo del tempo di inattività del cluster nel seguente modo:

  • Questa proprietà è abilitata (impostata su true) per impostazione predefinita.
  • Quando questa proprietà è abilitata, sia l'attività dell'API YARN che quella dell'API Dataproc Jobs devono essere inattive per avviare e continuare a incrementare il calcolo del tempo di inattività del cluster.
    • L'attività YARN include le applicazioni YARN in attesa e in esecuzione.
    • L'attività dell'API Dataproc Jobs include i job in attesa e in esecuzione inviati all'API Dataproc Jobs.
  • Quando questa proprietà è impostata su false, il calcolo del tempo di inattività del cluster inizia e continua solo quando l'attività dell'API Dataproc Jobs è inattiva.

Utilizzare l'arresto pianificato del cluster

Interfaccia a riga di comando gcloud

Puoi impostare i valori di arresto pianificato quando crei un cluster utilizzando la Google Cloud CLI o l'API Dataproc. Dopo aver creato il cluster, puoi aggiornarlo per modificare o eliminare i valori di arresto pianificato del cluster impostati in precedenza sul cluster.

Flag Descrizione Granularità più precisa Valore min Valore max
--stop-max-idle1 Si applica ai comandi di creazione e aggiornamento dei cluster. La durata dal momento in cui il cluster entra nello stato di inattività (dopo la creazione o l'avvio) al momento in cui il cluster inizia a essere arrestato. Fornisci la durata nel formato IntegerUnit, dove l'unità può essere "s, m, h, d" (rispettivamente secondi, minuti, ore, giorni). Esempi: "30m" o "1d" (30 minuti o 1 giorno da quando il cluster diventa inattivo). 1 secondo 5 minuti 14 giorni
--no-stop-max-idle Si applica solo al comando di aggiornamento del cluster. Annulla l'arresto pianificato del cluster tramite il flag impostato in precedenza --stop-max-idle Non applicabile Non applicabile Non applicabile
--stop-expiration-time2 Si applica ai comandi di creazione e aggiornamento dei cluster. L'ora in cui iniziare ad arrestare il cluster in formato di data e ora ISO 8601. Puoi generare la data e l'ora nel formato corretto utilizzando il generatore di timestamp. Ad esempio, "2017-08-22T13:31:48-08:00" specifica un'ora di scadenza di 13:21:48 nel fuso orario UTC -8:00.1 secondo10 minuti dall'ora attuale 14 giorni dall'ora attuale
--stop-max-age2 Si applica ai comandi di creazione e aggiornamento dei cluster. La durata dal momento dell'invio della richiesta di creazione del cluster al momento in cui il cluster inizia a essere arrestato. Fornisci la durata nel formato IntegerUnit dove l'unità può essere "s, m, h, d" (secondi, minuti, ore, giorni). Esempi: "30m": 30 minuti da ora; "1d": 1 giorno da ora. 1 secondo 10 minuti 14 giorni
Note:
  1. Puoi passare il stop-max-idle flag con il stop-expiration-time o stop-max-age flag nella tua richiesta di creazione o aggiornamento del cluster. Il primo a diventare vero ha effetto sull'arresto del cluster.
  2. Puoi passare il flag stop-expiration-time o il flag stop-max-age al comando di creazione o aggiornamento del cluster, ma non entrambi.

Esempio di creazione del cluster:

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --stop-max-idle=DURATION \
    --stop-expiration-time=TIME \
    ... other flags ...

Esempio di aggiornamento del cluster:

Ad esempio:

gcloud dataproc clusters update CLUSTER_NAME \
    --region=REGION \
    --stop-max-idle=DURATION \
    --no-stop-max-age \
    ... other flags

API REST

cluster.patch

Flag Descrizione Granularità più precisa Valore min Valore max
idleStopTtl1 Si applica ai comandi di creazione e aggiornamento dei cluster. La durata dal momento in cui il cluster entra nello stato di inattività dopo la creazione o l'aggiornamento al momento in cui il cluster inizia a essere arrestato. Fornisci una durata in secondi con un massimo di nove cifre frazionarie, terminata da 's'. Esempio: "3.5s". Invia una richiesta cluster.patch con una durata vuota per annullare un valore idleDeleteTtl impostato in precedenza. 1 secondo 5 minuti
14 giorni
autoStopTime2 Si applica ai comandi di creazione e aggiornamento dei cluster. L'ora in cui iniziare ad arrestare il cluster. Fornisci un timestamp in RFC 3339 formato "Zulu" UTC, preciso al nanosecondo. Esempio: "2014-10-02T15:01:23.045123456Z". 1 secondo 10 minuti dall'ora attuale 14 giorni dall'ora attuale
autoStopTtl2 La durata dal momento dell'invio della richiesta di creazione o aggiornamento del cluster al momento in cui il cluster inizia a essere arrestato. Fornisci una durata in secondi con un massimo di nove cifre frazionarie, terminata da "s". Esempio: "3.5s". 1 secondo 10 minuti.
Invia una cluster.patch richiesta con una durata vuota per annullare un valore autoStopTtl impostato in precedenza.
14 giorni
Note:
  1. Puoi passare il stop-max-idle flag con il stop-expiration-time o stop-max-age flag nella tua richiesta di creazione o aggiornamento del cluster. Il primo a diventare vero ha effetto sull'arresto del cluster.
  2. Puoi passare il flag stop-expiration-time o il flag stop-max-age al comando di creazione o aggiornamento del cluster, ma non entrambi.

Utilizzare l'arresto pianificato con l'eliminazione pianificata

Se utilizzi sia l'arresto pianificato del cluster sia l'eliminazione pianificata del cluster, durante la creazione o l'aggiornamento di un cluster, tieni presente i seguenti vincoli:

  • Il periodo stop-max-idle deve essere inferiore o uguale al delete-max-idle periodo, o al periodo risultante da delete-max-age o delete-expiration-time.

  • stop-max-age e stop-expiration-time devono essere successivi rispettivamente a delete-max-age e delete-expiration-time.

Visualizzare le impostazioni del cluster di arresto pianificato

Interfaccia a riga di comando gcloud

Puoi utilizzare il comando gcloud dataproc clusters list per verificare che l'arresto pianificato sia abilitato per un cluster.

 gcloud dataproc clusters list \
     --region=REGION

Esempio di output:

...
NAME         WORKER_COUNT ... SCHEDULED_STOP
CLUSTER_ID   NUMBER       ... enabled
...

Puoi utilizzare il comando gcloud dataproc clusters describe per controllare le impostazioni di arresto pianificato del cluster LifecycleConfig.

gcloud dataproc clusters describe CLUSTER_NAME \
    --region=REGION

Esempio di output:

...
lifecycleConfig:
  autoStopTime: '2018-11-28T19:33:48.146Z'
  idleStopTtl: 1800s
  idleStartTime: '2018-11-28T18:33:48.146Z'
...

I valori autoStopTime e idleStopTtl vengono impostati dall'utente. Dataproc genera il idleStartTime valore, che è l'ultima ora di inizio dell'inattività del cluster.

Sebbene Dataproc calcoli idleStartTime in base a la cessazione dell'attività dei job, il meccanismo per l'arresto pianificato del cluster considera sia idleStartTime sia l'ultima ora di avvio del cluster. In particolare, se un cluster viene arrestato da un utente o da Dataproc, il calcolo dell'inattività per la funzionalità di arresto pianificato viene reimpostato. Ciò significa che il conto alla rovescia per un arresto pianificato riprende al successivo avvio del cluster. Tuttavia, il idleStartTime stesso non viene reimpostato quando un cluster arrestato viene riavviato. Continua a riflettere l'ultima occorrenza di inattività dei job prima di l'arresto.

Pertanto, affinché Dataproc arresti un cluster in base a idleStopTtl, devono essere soddisfatte due condizioni:

  1. Il cluster deve essere inattivo per la durata specificata da idleStopTtl dall'ultimo avvio.
  2. Il cluster deve essere inattivo per la durata specificata da idleStopTtl dall'ultimo ripristino di idleStartTime.

API REST

Puoi inviare una clusters.list richiesta per verificare che l'arresto pianificato sia abilitato per un cluster.