Per evitare di incorrere Google Cloud in addebiti per un cluster inattivo o la necessità di eliminare e ricreare un cluster per evitare di incorrere in addebiti per il cluster , utilizza la funzionalità di arresto pianificato del cluster Managed Service for Apache Spark, 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 Managed Service for Apache Spark. 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à 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.
- 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 disattivazione non viene annullata:
- Rimozione del ruolo Agente di servizio Managed Service for Apache Spark IAM nel service account dell'agente di servizio Dataproc
- Disattivazione dell'API Managed Service for Apache Spark nel progetto del cluster
- Attivazione dei Controlli di servizio VPC se il service account dell'agente di servizio Managed Service for Apache Spark (identità del piano di controllo) non si trova all'interno del limite del perimetro
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 modo seguente:
- Questa proprietà è attivata (impostata su
true) per impostazione predefinita. - Quando questa proprietà è attivata, sia l'attività dell'API YARN che quella dell'API Jobs di Managed Service for Apache Spark 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 Jobs di Managed Service for Apache Spark include i job in attesa e in esecuzione inviati all'API Jobs di Managed Service for Apache Spark.
- Quando questa proprietà è impostata su
false, il calcolo del tempo di inattività del cluster inizia e continua solo quando l'attività dell'API Jobs di Managed Service for Apache Spark è inattiva.
Utilizzare l'arresto pianificato del cluster
Google Cloud Console
Puoi impostare i valori di arresto pianificato quando crei un cluster utilizzando la Google Cloud console nel modo seguente:
- Apri la pagina Crea cluster.
- In Definisci le impostazioni di controllo dei costi , seleziona Imposta una policy di conservazione facoltativa per controllare i costi, quindi seleziona le impostazioni di arresto del cluster (o eliminazione del cluster).
gcloud CLI
Puoi impostare i valori di arresto pianificato quando crei un cluster utilizzando Google Cloud CLI o l'API Managed Service for Apache Spark. 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 minimo | Valore massimo |
|---|---|---|---|---|
--stop-max-idle1 |
Si applica ai comandi di creazione e aggiornamento del 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 ad arrestarsi.
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 del 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 secondo | 10 minuti dall'ora attuale | 14 giorni dall'ora attuale |
--stop-max-age2 |
Si applica ai comandi di creazione e aggiornamento del cluster.
La durata dal momento dell'invio della richiesta di creazione del cluster
al momento in cui il cluster inizia ad arrestarsi. 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 |
- Puoi passare il
stop-max-idleflag con ilstop-expiration-timeostop-max-ageflag nella tua richiesta di creazione o aggiornamento del cluster. Il primo a diventare vero ha effetto sull'arresto del cluster. - Puoi passare il flag
stop-expiration-timeo il flagstop-max-ageal 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
Puoi creare o aggiornare i valori di arresto pianificato su un cluster impostando i campi e i valori di Managed Service for Apache Spark API ClusterLifecycleConfig elencati nella tabella seguente come parte di una richiesta API Managed Service for Apache Spark cluster.create o cluster.patch.
| Flag | Descrizione | Granularità più precisa | Valore minimo | Valore massimo |
|---|---|---|---|---|
idleStopTtl1 |
Si applica ai comandi di creazione e aggiornamento del 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 ad arrestarsi.
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 del 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 ad arrestarsi. 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 |
- Puoi passare il
stop-max-idleflag con ilstop-expiration-timeostop-max-ageflag nella tua richiesta di creazione o aggiornamento del cluster. Il primo a diventare vero ha effetto sull'arresto del cluster. - Puoi passare il flag
stop-expiration-timeo il flagstop-max-ageal 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, quando crei o aggiorni un cluster, tieni presente i seguenti vincoli:
Il periodo
stop-max-idledeve essere inferiore o uguale al periododelete-max-idleo al periodo risultante dadelete-max-ageodelete-expiration-time.stop-max-ageestop-expiration-timedevono essere successivi rispettivamente adelete-max-ageedelete-expiration-time.
Visualizzare le impostazioni del cluster di arresto pianificato
Google Cloud Console
- Puoi visualizzare le impostazioni di arresto pianificato del cluster selezionando il nome del cluster dalla pagina Cluster Managed Service for Apache Spark nella console. Google Cloud
- Nella pagina dei dettagli dei cluster, seleziona la Configurazione scheda. Vai all'elenco delle configurazioni del cluster per visualizzare le impostazioni di arresto pianificato.
gcloud CLI
Puoi utilizzare il comando gcloud dataproc clusters list per
verificare che l'arresto pianificato sia attivato 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 di LifecycleConfig del cluster.
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. Managed Service for Apache Spark genera il valore idleStartTime, che è l'ultima ora di inizio di inattività del cluster.
Anche se Managed Service for Apache Spark calcola idleStartTime in base alla 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 Managed Service for Apache Spark, 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, idleStartTime non viene reimpostato quando viene riavviato un cluster arrestato. Continua a riflettere l'ultima occorrenza di inattività dei job prima dell'arresto.
Pertanto, devono essere soddisfatte due condizioni affinché Managed Service for Apache Spark arresti un cluster in base a idleStopTtl:
- Il cluster deve essere inattivo per la durata specificata da
idleStopTtldall'ultimo avvio. - Il cluster deve essere inattivo per la durata specificata da
idleStopTtldall'ultimo ripristino diidleStartTime.
API REST
Puoi inviare una
clusters.list
richiesta per verificare che l'arresto pianificato sia attivato per un cluster.