Scalare automaticamente HDInsight sui cluster di Azure Kubernetes Service
Importante
Azure HDInsight su AKS è stato ritirato il 31 gennaio 2025. Scopri di più con questo annuncio.
È necessario eseguire la migrazione dei carichi di lavoro a Microsoft Fabric o a un prodotto Azure equivalente per evitare la chiusura brusca dei carichi di lavoro.
Importante
Questa funzionalità è attualmente in anteprima. Le condizioni supplementari per l'utilizzo per le anteprime di Microsoft Azure includono termini legali più validi applicabili alle funzionalità di Azure in versione beta, in anteprima o altrimenti non ancora rilasciate nella disponibilità generale. Per informazioni su questa anteprima specifica, vedere informazioni sull'anteprima di Azure HDInsight su AKS. Per domande o suggerimenti sulle funzionalità, inviare una richiesta in AskHDInsight con i dettagli e seguire Microsoft per altri aggiornamenti su Community di Azure HDInsight.
Il dimensionamento di qualsiasi cluster per soddisfare le prestazioni dei processi e gestire i costi in anticipo è sempre difficile da determinare. Uno dei vantaggi redditizi della creazione di data lake house su Cloud è la sua elasticità, il che significa usare la funzionalità di scalabilità automatica per ottimizzare l'utilizzo delle risorse a portata di mano. La scalabilità automatica con Kubernetes è una delle chiavi per stabilire un ecosistema ottimizzato per i costi. Con modelli di utilizzo diversi in qualsiasi azienda, potrebbero verificarsi variazioni nei carichi del cluster nel tempo che potrebbero portare a un sottodimensionamento dei cluster (prestazioni insufficienti) o a un sovradimensionamento (costi non necessari a causa di risorse inattive).
La funzionalità di scalabilità automatica offerta in HDInsight su AKS può aumentare o diminuire automaticamente il numero di nodi di lavoro nel cluster. La scalabilità automatica usa le metriche del cluster e i criteri di ridimensionamento usati dai clienti.
Questa funzionalità è particolarmente adatta per carichi di lavoro cruciali, che potrebbero avere
- Modelli di traffico variabili o imprevedibili e richiedono contratti di servizio su prestazioni elevate e scalabilità o
- Pianificazione predeterminata per rendere disponibili i nodi di lavoro necessari per eseguire correttamente i processi nel cluster.
La scalabilità automatica con HDInsight sui cluster di Azure Kubernetes Service (AKS) rende i cluster convenienti in termini di costi ed elastici su Azure.
Con la scalabilità automatica, i clienti possono ridurre i cluster senza influire sui carichi di lavoro. È abilitato con funzionalità avanzate, come la disattivazione senza interruzioni e la fase di raffreddamento. Queste funzionalità consentono agli utenti di effettuare scelte informate sull'aggiunta e la rimozione di nodi in base al carico corrente del cluster.
Come funziona
Questa funzionalità funziona ridimensionando il numero di nodi entro limiti predefiniti in base alle metriche del cluster o a una pianificazione definita delle operazioni di aumento e riduzione delle prestazioni. Esistono due tipi di condizioni per attivare eventi di scalabilità automatica: trigger basati su soglia per varie metriche delle prestazioni del cluster (denominata scalabilità basata sul carico) e trigger basati sul tempo (denominati scalabilità basata su pianificazione).
Il ridimensionamento basato sul carico modifica il numero di nodi nel cluster, all'interno di un intervallo impostato, per garantire un utilizzo ottimale della CPU e ridurre al minimo i costi in esecuzione.
Il ridimensionamento basato sulla pianificazione modifica il numero di nodi nel cluster in base a una pianificazione delle operazioni di aumento e riduzione delle prestazioni.
Nota
La scalabilità automatica non supporta la modifica del tipo di SKU di un cluster esistente.
Compatibilità dei cluster
Nella tabella seguente vengono descritti i tipi di cluster compatibili con la funzionalità scalabilità automatica e gli elementi disponibili o pianificati.
Carico di lavoro | Basato sul carico | Basato sulla pianificazione |
---|---|---|
Flink | Pianificato | Sì |
Trino | Sì** | Sì** |
Scintilla | Sì** | Sì** |
La disattivazione graduale è configurabile.
Metodi di ridimensionamento
Scalabilità basata sulla pianificazione:
Scala basata sul carico :
Quando i modelli di carico fluttuano in modo sostanziale e imprevedibile durante il giorno, ad esempio l'elaborazione dei dati dell'ordine con fluttuazioni casuali nei modelli di carico in base a vari fattori.
Con la nuova opzione configurare la regola di scalabilità, è ora possibile personalizzare le regole di scalabilità.
Suggerimento
- Le regole di scalabilità hanno la precedenza quando vengono attivate una o più regole. Anche se solo una delle regole per scalare suggerisce che il cluster sia sotto-provisionato, il cluster tenterà di scalare. Per ridurre le prestazioni, non deve essere attivata alcuna regola di aumento delle prestazioni.
Condizioni di scalabilità basate sul carico
Quando vengono rilevate le condizioni seguenti, la scalabilità automatica genera una richiesta di scalabilità
Scalabilità | Riduzione della scala |
---|---|
I core assegnati sono maggiori di 80% per l'intervallo di sondaggio di 5 minuti (periodo di controllo di 1 minuto) | I core assegnati sono minori o uguali a 20% per l'intervallo di polling di 5 minuti (periodo di controllo di 1 minuto) |
Per aumentare le prestazioni, la scalabilità automatica genera una richiesta di aumento delle prestazioni per aggiungere il numero di nodi richiesto. La scalabilità orizzontale si basa sul numero di nuovi nodi di lavoro necessari per soddisfare i requisiti correnti di CPU e memoria. Questo valore è limitato al numero massimo di nodi di lavoro impostati.
Per ridurre le prestazioni, la scalabilità automatica genera una richiesta di rimozione di alcuni nodi. Le considerazioni sulla riduzione includono il numero di pod per nodo, i requisiti correnti di CPU e memoria e i nodi di lavoro, candidati per la rimozione in base all'esecuzione corrente del processo. L'operazione di riduzione della scala mette prima fuori servizio i nodi e poi li rimuove dal cluster.
Importante
Il motore delle regole di scalabilità automatica elimina in modo proattivo i vecchi eventi ogni 30 minuti per ottimizzare la memoria del sistema. Di conseguenza, esiste un limite massimo di 30 minuti nell'intervallo della regola di ridimensionamento. Per garantire l'attivazione coerente e affidabile delle azioni di ridimensionamento, è fondamentale impostare l'intervallo delle regole di ridimensionamento su un valore minore del limite. Rispettando questa linea guida, è possibile garantire un processo di scalabilità uniforme ed efficiente, gestendo in modo efficace le risorse di sistema.
Metriche del cluster
La scalabilità automatica monitora continuamente il cluster e raccoglie le metriche seguenti per la scalabilità automatica basata sul carico:
Metriche del cluster disponibili a scopo di ridimensionamento
Metrico | Descrizione |
---|---|
Percentuale dei core disponibili | Numero totale di core disponibili nel cluster rispetto al numero totale di core nel cluster. |
Percentuale memoria disponibile | Memoria totale (in MB) disponibile nel cluster rispetto alla quantità totale di memoria nel cluster. |
Percentuale di core allocati | Numero totale di core allocati nel cluster rispetto al totale dei core disponibili nel cluster. |
Percentuale della memoria allocata | Quantità di memoria allocata nel cluster rispetto alla quantità totale di memoria nel cluster. |
Per impostazione predefinita, le metriche precedenti vengono controllate ogni 300 secondi. È possibile configurarle anche personalizzando l'intervallo di polling con l'opzione di scalabilità automatica. La scalabilità automatica prende decisioni di aumento o riduzione delle prestazioni in base a queste metriche.
Nota
Per impostazione predefinita, la scalabilità automatica usa il calcolatore di risorse predefinito per YARN per Apache Spark. Il ridimensionamento basato sul carico è disponibile per i cluster Apache Spark.
Rimozione normale
Le aziende hanno bisogno di modi per raggiungere una scala di petabyte con scalabilità automatica e disattivare le risorse in modo ordinato quando non sono più necessarie. In questo scenario, la funzionalità di disattivazione graduale risulta utile.
La dismissione graduale consente il completamento dei lavori anche dopo che la scalabilità automatica ha attivato la dismissione dei nodi di lavoro. Questa funzionalità consente di continuare a eseguire il provisioning dei nodi fino al completamento dei processi.
Trino: Gli operatori hanno la dismissione graduale abilitata per impostazione predefinita. Coordinator consente al lavoratore di completare le sue attività per un certo periodo di tempo configurato prima di rimuovere il lavoratore dal cluster. È possibile configurare il timeout usando il parametro Trino nativo
shutdown.grace-period
o nella pagina di configurazione del servizio del portale di Azure.Apache Spark: il ridimensionamento può influire o arrestare eventuali processi in esecuzione nel cluster. Se si abilitano le impostazioni di Graceful Decommissioning nel portale di Azure, incorpora la dismissione controllata dei nodi YARN e garantisce che qualsiasi lavoro in corso su un nodo di lavoro venga completato prima che il nodo venga rimosso dal cluster HDInsight su AKS.
Periodo di raffreddamento
Per evitare operazioni di scalabilità continua, il motore di scalabilità automatica attende un intervallo configurabile prima di avviare un altro set di operazioni di scalabilità orizzontale. Il valore predefinito è impostato su 180 secondi
Nota
- Nelle regole di scala personalizzate, nessun trigger di regola può avere un intervallo superiore a 30 minuti. Dopo che si verifica un evento di ridimensionamento automatico, il tempo di attesa prima di applicare un'altra regola di ridimensionamento.
- Il periodo di raffreddamento deve essere maggiore dell'intervallo della politica, in modo che le metriche del cluster possano essere reimpostate.
Inizia
Per far funzionare la scalabilità automatica, è necessario assegnare il permesso di proprietario o di collaboratore all'identità del servizio gestito (MSI usata per la creazione del cluster) a livello di cluster, utilizzando IAM nel pannello a sinistra.
Fare riferimento alla figura seguente e ai passaggi elencati su come aggiungere un'assegnazione di ruolo
Selezionare e aggiungere un'assegnazione di ruolo.
- Tipo di assegnazione: ruoli di amministratore con privilegi
- Ruolo: proprietario o collaboratore
- Membri: scegliere Identità gestita e selezionare l''identità gestita assegnata dall'utente, che è stata assegnata durante la fase di creazione del cluster.
- Assegna il ruolo.
Creare un cluster con scalabilità automatica basata su pianificazione
Dopo aver creato il pool di cluster, creare un nuovo cluster con il carico di lavoro desiderato (nel tipo di cluster) e completare gli altri passaggi come parte del normale processo di creazione del cluster.
Nella scheda Configurazione, abilitare l'opzione Scalabilità automatica.
Selezionare Scalabilità automatica basata sulla pianificazione
Selezionare il fuso orario e quindi fare clic su + Aggiungi regola
Selezionare i giorni della settimana a cui applicare la nuova condizione.
Modificare l'ora in cui la condizione deve essere applicata e il numero di nodi su cui deve essere ridimensionato il cluster.
Nota
- L'utente deve avere il ruolo di "proprietario" o "collaboratore" nel cluster MSI per il funzionamento della scalabilità automatica.
- Il valore predefinito definisce le dimensioni iniziali del cluster al momento della creazione.
- La differenza tra due pianificazioni è impostata di default a 30 minuti.
- Il valore del tempo segue il formato di 24 ore
- In caso di finestra continua di oltre 24 ore tra giorni, è necessario impostare la pianificazione della scalabilità automatica tra giorni e la scalabilità automatica presuppone che le 23:59 siano 00:00 (con lo stesso numero di nodi) che si estendono tra due giorni dalle 22:00 alle 23:59, dalle 00:00 alle 02:00 dalle 22:00 alle 02:00.
- Le pianificazioni vengono impostate nell'ora UTC (Coordinated Universal Time), per impostazione predefinita. È sempre possibile eseguire l'aggiornamento al fuso orario corrispondente al fuso orario locale nell'elenco a discesa disponibile. Quando ci si trova in un fuso orario che osserva l'ora legale, la pianificazione non viene modificata automaticamente, è necessario gestire gli aggiornamenti della pianificazione di conseguenza.
Creare un cluster con scalabilità automatica basata sul carico
Dopo aver creato il pool di cluster, creare un nuovo cluster con il carico di lavoro desiderato (nel tipo di cluster) e completare gli altri passaggi come parte del normale processo di creazione del cluster.
Nella scheda Configurazione, attivare l'opzione Scalabilità automatica.
Selezionare Carico basato su scalabilità automatica
In base al tipo di carico di lavoro, è possibile aggiungere timeout di decommissioning controllato, periodo di pausa
Selezionare il minimo e nodi massimi e, se necessario, configurare le regole di scalabilità per personalizzare la scalabilità automatica in base alle esigenze.
Consiglio
- La sottoscrizione ha una quota di capacità per ogni regione. Il numero totale di core dei nodi principali e il numero massimo di nodi lavoratori non può superare la quota di capacità. Tuttavia, questa quota è un limite flessibile; è sempre possibile creare un ticket di supporto per aumentarlo facilmente.
- Se si supera il limite di quota totale di core, verrà visualizzato un messaggio di errore che indica
The maximum node count you can select is {maxCount} due to the remaining quota in the selected subscription ({remaining} cores)
. - Le regole di scalamento hanno la precedenza quando vengono attivate una o più regole. Anche se solo una delle regole per aumentare la scala indica che il cluster è sotto-provisionato, il cluster tenterà di aumentare la capacità. Per ridurre le prestazioni, non deve essere attivata alcuna regola di aumento delle prestazioni.
- In anteprima pubblica, HDInsight su AKS supporta fino a 500 nodi in un cluster.
Creare un cluster con un modello di Resource Manager
Scalabilità automatica basata su programmazione
È possibile creare un cluster HDInsight su un cluster AKS con scalabilità automatica basata su programmazione utilizzando un modello di Azure Resource Manager, aggiungendo la scalabilità automatica alla sezione autoscaleProfile del clusterProfile ->.
Il nodo di scalabilità automatica contiene una ricorrenza con un fuso orario e una pianificazione che descrive quando viene eseguita la modifica. Per un modello di Resource Manager completo, vedere l'esempio json
{
"autoscaleProfile": {
"enabled": true,
"autoscaleType": "ScheduleBased",
"gracefulDecommissionTimeout": 60,
"scheduleBasedConfig": {
"schedules": [
{
"days": [
"Monday",
"Tuesday",
"Wednesday"
],
"startTime": "09:00",
"endTime": "10:00",
"count": 2
},
{
"days": [
"Sunday",
"Saturday"
],
"startTime": "12:00",
"endTime": "22:00",
"count": 5
},
{
"days": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday"
],
"startTime": "22:00",
"endTime": "23:59",
"count": 6
},
{
"days": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday"
],
"startTime": "00:00",
"endTime": "05:00",
"count": 6
}
],
"timeZone": "UTC",
"defaultCount": 110
}
}
}
Mancia
- È necessario impostare pianificazioni non in conflitto usando le distribuzioni ARM, per evitare fallimenti delle operazioni di scaling.
Ridimensionamento automatico basato sul carico
È possibile creare un cluster HDInsight su un cluster AKS con autoscaling basato sul carico usando un modello di Azure Resource Manager, aggiungendo un autoscaling alla sezione autoscaleProfile del clusterProfile ->.
Il nodo di scalabilità automatica contiene
- un intervallo di polling, periodo di raffreddamento,
- dismissione elegante
- nodi minimo e massimo,
- regole di soglia standard,
- metriche di ridimensionamento che descrivono quando viene apportata la modifica.
Per un modello di Resource Manager completo, vedere il codice JSON di esempio come segue
{
"autoscaleProfile": {
"enabled": true,
"autoscaleType": "LoadBased",
"gracefulDecommissionTimeout": 60,
"loadBasedConfig": {
"minNodes": 2,
"maxNodes": 157,
"pollInterval": 300,
"cooldownPeriod": 180,
"scalingRules": [
{
"actionType": "scaleup",
"comparisonRule": {
"threshold": 80,
"operator": " greaterThanOrEqual"
},
"evaluationCount": 1,
"scalingMetric": "allocatedCoresPercentage"
},
{
"actionType": "scaledown",
"comparisonRule": {
"threshold": 20,
"operator": " lessThanOrEqual"
},
"evaluationCount": 1,
"scalingMetric": "allocatedCoresPercentage"
}
]
}
}
}
Uso dell'API REST
Per abilitare o disabilitare la scalabilità automatica in un cluster in esecuzione usando l'API REST, effettuare una richiesta PATCH all'endpoint di scalabilità automatica: https://management.azure.com/subscriptions/{{USER_SUB}}/resourceGroups/{{USER_RG}}/providers/Microsoft.HDInsight/clusterpools/{{CLUSTER_POOL_NAME}}/clusters/{{CLUSTER_NAME}}?api-version={{HILO_API_VERSION}}
- Usare i parametri appropriati nel payload della richiesta. Il payload JSON può essere usato per abilitare la scalabilità automatica.
- Usare il payload (autoscaleProfile: null) o usare il flag (abilitato, false) per disabilitare la scalabilità automatica.
- Per informazioni di riferimento, vedere gli esempi JSON indicati nel passaggio precedente.
Sospendere la scalabilità automatica per un cluster in esecuzione
Abbiamo introdotto una funzione di pausa in Auto Scale. Ora, usando il portale di Azure, è possibile sospendere la scalabilità automatica in un cluster in esecuzione. Il diagramma seguente illustra come selezionare la sospensione e riprendere la scalabilità automatica
È possibile riprendere una volta che si desidera riprendere le operazioni di scalabilità automatica.
Mancia
Quando si configurano più pianificazioni e si sospendo la scalabilità automatica, non viene attivata la pianificazione successiva. Il numero di nodi rimane invariato, anche se i nodi si trovano in uno stato di disattivazione.
Copiare le configurazioni di scalabilità automatica
Usando il portale di Azure, è ora possibile copiare le stesse configurazioni di scalabilità automatica per una stessa forma di cluster nel pool di cluster, è possibile usare questa funzionalità ed esportare o importare le stesse configurazioni.
Monitoraggio delle attività di scalabilità automatica
Stato del cluster
Lo stato del cluster elencato nel portale di Azure consente di monitorare le attività di scalabilità automatica. Tutti i messaggi di stato del cluster visualizzati sono illustrati nell'elenco.
Stato del cluster | Descrizione |
---|---|
Riuscito | Il cluster funziona normalmente. Tutte le attività di scalabilità automatica precedenti sono state completate correttamente. |
Accettato | L'operazione del cluster (ad esempio: aumento delle prestazioni) viene accettata, in attesa del completamento dell'operazione. |
Fallito | Ciò significa che un'operazione corrente non è riuscita a causa di qualche motivo, il cluster potrebbe non funzionare. |
Annullato | L'operazione corrente è annullata. |
Per visualizzare il numero corrente di nodi nel cluster, passare al grafico Dimensioni cluster nella pagina di Panoramica per il cluster.
Cronologia operazioni
È possibile visualizzare la cronologia di aumento e riduzione delle prestazioni del cluster come parte delle metriche del cluster. È anche possibile elencare tutte le azioni di ridimensionamento nell'ultimo giorno, settimana o altro periodo.
Risorse aggiuntive
Scala manuale - Azure HDInsight su AKS