Dimensionare automaticamente i cluster Azure HDInsight
La funzionalità di scalabilità automatica gratuita di Azure HDInsight può aumentare o ridurre automaticamente il numero di nodi di lavoro nel cluster in base alle metriche del cluster e ai criteri di ridimensionamento adottati dai clienti. Questa funzionalità agisce ridimensionando il numero di nodi entro limiti predefiniti in base a metriche delle prestazioni o a una pianificazione definita delle operazioni di aumento e riduzione.
Funzionamento
La funzione di scalabilità automatica usa due tipi di condizioni per attivare eventi di ridimensionamento: soglie per varie metriche delle prestazioni del cluster (c.d. ridimensionamento basato sul carico) e trigger basati sul tempo (c.d. ridimensionamento basato sulla 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.
Il video seguente offre una panoramica delle problematiche risolte dalla scalabilità automatica e come può essere utile per controllare i costi con HDInsight.
Scelta del ridimensionamento basato sul carico o basato su pianificazione
Il ridimensionamento basato sulla pianificazione può essere usato:
- Quando si prevede che i processi verranno eseguiti in base a pianificazioni fisse e per una durata prevedibile o quando si prevede un utilizzo ridotto in determinate ore del giorno. Ad esempio, ambienti di test e sviluppo in orari post-lavorativi, processi di fine giornata.
Il ridimensionamento basato sul carico può essere usato:
- Quando i modelli di carico oscillano in modo sostanziale e imprevedibile durante il giorno. Ad esempio, ordinare l'elaborazione dei dati con oscillazioni casuali in modelli di carico basati su vari fattori.
Metriche del cluster
La funzionalità di scalabilità automatica monitora continuamente il cluster e raccoglie le metriche seguenti:
Metrico | Descrizione |
---|---|
Total Pending CPU (Totale CPU in sospeso) | numero totale di core necessari per avviare l'esecuzione di tutti i contenitori in sospeso. |
Total Pending Memory (Totale memoria in sospeso) | memoria totale (in MB) necessaria per avviare l'esecuzione di tutti i contenitori in sospeso. |
Total Free CPU (Totale CPU disponibile) | somma di tutti i core inutilizzati nei nodi del ruolo di lavoro attivi. |
Total Free Memory (Totale memoria disponibile) | somma della memoria inutilizzata (in MB) nei nodi del ruolo di lavoro attivi. |
Used Memory per Node (Memoria utilizzata per nodo) | carico su un nodo del ruolo di lavoro. Un nodo del ruolo di lavoro in cui sono utilizzati 10 GB di memoria è considerato come sottoposto a un carico superiore rispetto a un nodo del ruolo di lavoro con 2 GB di memoria utilizzata. |
Numero di master applicazioni per nodo | numero di contenitori di master applicazioni in esecuzione su un nodo del ruolo di lavoro. Un nodo di lavoro che ospita due contenitori AM è considerato più importante di un nodo di lavoro che non ne ospita alcuno. |
Le metriche riportate sopra vengono controllate ogni 60 secondi. La funzionalità di scalabilità automatica si basa su queste metriche per decidere se aumentare o ridurre il numero di nodi.
Per un elenco completo delle metriche del cluster, vedere Metriche supportate per Microsoft.HDInsight/clusters.
Condizioni di scalabilità in base al carico
Quando vengono rilevate le condizioni seguenti, la scalabilità automatica invia una richiesta di ridimensionamento:
Aumentare | Riduzione |
---|---|
Il totale CPU in sospeso è maggiore del totale CPU libere per oltre 3-5 minuti. | Il totale CPU in sospeso è minore del totale CPU libere per oltre 3-5 minuti. |
Il totale memoria in sospeso è maggiore del totale memoria libera per oltre 3-5 minuti. | Il totale memoria in sospeso è minore del totale memoria libera per oltre 3-5 minuti. |
Per l'aumento, la scalabilità automatica genera una richiesta di aumento per aggiungere il numero di nodi richiesto. L'aumento si basa sul numero di nuovi nodi di lavoro necessari per soddisfare i requisiti correnti di CPU e memoria.
Per la riduzione, la scalabilità automatica genera una richiesta per rimuovere alcuni nodi. La riduzione è basata sul numero di contenitori Application Master (AM) per nodo. E sui requisiti correnti relativi a CPU e memoria. Il servizio rileva anche i nodi candidati per la rimozione in base all'esecuzione del processo corrente. L'operazione di riduzione prevede prima la disattivazione e quindi il ritiro dei nodi dal cluster.
Considerazioni sul dimensionamento del database Ambari per la scalabilità automatica
È consigliabile dimensionare correttamente il database Ambari per sfruttare i vantaggi della scalabilità automatica. I clienti devono usare il livello di database corretto e usare il database Ambari personalizzato per cluster di grandi dimensioni. Leggere i consigli sul dimensionamento di database e headnode.
Compatibilità dei cluster
Importante
La funzionalità di scalabilità automatica di Azure HDInsight, rilasciata per la disponibilità generale il 7 novembre 2019 per i cluster Spark e Hadoop, include miglioramenti non disponibili nella versione di anteprima della funzionalità. Se è stato creato un cluster Spark prima del 7 novembre 2019 e si desidera usare la funzionalità di scalabilità automatica nel cluster, è consigliabile creare un nuovo cluster e enable Autoscale
nel nuovo cluster.
La scalabilità automatica per Interactive Query (LLAP) è stata rilasciata per la disponibilità generale per HDI 4.0 il 27 agosto 2020. La scalabilità automatica è disponibile solo in cluster Spark, Hadoop, Interactive Query.
La tabella seguente descrive i tipi di cluster e le versioni compatibili con la funzionalità di scalabilità automatica.
Versione | Spark | Hive | Interactive Query | hbase | Kafka |
---|---|---|---|---|---|
HDInsight 4.0 senza ESP | Sì | Sì | Sì* | No | No |
HDInsight 4.0 con ESP | Sì | Sì | Sì* | No | No |
HDInsight 5.0 senza ESP | Sì | Sì | Sì* | No | No |
HDInsight 5.0 con ESP | Sì | Sì | Sì* | No | No |
* I cluster Interactive Query possono essere configurati solo per il ridimensionamento basato sulla pianificazione, non basato sul carico.
Operazioni preliminari
Creare un cluster con scalabilità automatica basata sul carico
Per abilitare la funzionalità di scalabilità automatica con ridimensionamento basato sul carico, completare i passaggi seguenti durante il normale processo di creazione del cluster:
Nella scheda Configurazione + Prezzi, selezionare la casella di controllo
Enable autoscale
.Selezionare Basata sul carico in Tipo di scalabilità automatica.
Immettere i valori desiderati per le proprietà seguenti:
- Numero di nodi iniziali per Nodo di lavoro.
- Numero Min di nodi di lavoro.
- Numero Max di nodi di lavoro.
Il numero iniziale di nodi del ruolo di lavoro deve essere compreso tra il numero minimo e il numero massimo inclusi. Questo valore definisce le dimensioni iniziali del cluster quando viene creato. Il numero minimo di nodi di lavoro deve essere impostato su tre o più. Il ridimensionamento del cluster a meno di tre nodi può comportare un blocco in modalità provvisoria a causa di una replica file insufficiente. Per altre informazioni, vedere Blocco in modalità provvisoria.
Creare un cluster con scalabilità automatica basata sulla pianificazione
Per abilitare la funzionalità di scalabilità automatica con ridimensionamento basato sulla pianificazione, completare i passaggi seguenti durante il normale processo di creazione del cluster:
Nella scheda Configurazione + Prezzi, selezionare la casella di controllo
Enable autoscale
.Immettere il Numero di nodi per Nodo di lavoro, che controlla il limite per l'aumento del cluster.
Selezionare l'opzione Basata su pianificazione in Tipo di scalabilità automatica.
Selezionare Configura per aprire la finestra Configurazione scalabilità automatica.
Selezionare il fuso orario e quindi fare clic su + Aggiungi condizione
Selezionare i giorni della settimana in 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.
Aggiungi più condizioni se necessario.
Il numero di nodi deve essere compreso tra 3 e il numero massimo di nodi di lavoro immessi prima dell'aggiunta delle condizioni.
Passaggi di creazione finali
Selezionare il tipo di VM per i nodi di lavoro selezionando una VM dall'elenco a discesa in Dimensioni nodo. Dopo aver scelto il tipo di VM per ogni tipo di nodo, sarà possibile visualizzare l'intervallo del costo stimato per l'intero cluster. Modificare i tipi di VM in base al budget.
La sottoscrizione in uso ha una quota di capacità per ogni area. Il numero totale di core dei nodi head e il numero massimo di nodi di lavoro non può superare la quota di capacità. Questa quota tuttavia è un limite flessibile, in quanto è sempre possibile creare un ticket di supporto per aumentarla facilmente.
Nota
Se si supera il limite di quota di core totali, si riceve un messaggio di errore che indica che il numero massimo di nodi è superiore ai core disponibili in questa area e che invita a scegliere un'altra area o contattare il supporto per aumentare la quota.
Per altre informazioni sulla creazione del cluster HDInsight tramite il portale di Azure, vedere Creare cluster basati su Linux in HDInsight tramite il portale di Azure.
Creare un cluster con un modello di Resource Manager
Scalabilità automatica basata sul carico
È possibile creare un cluster HDInsight con un modello di ARM per la scalabilità automatica basata sul carico aggiungendo un nodo autoscale
alla sezione computeProfile
>workernode
con le proprietà minInstanceCount
e maxInstanceCount
come illustrato nel frammento json seguente. Per un modello di ARM completo, vedere Modello di avvio rapido: Distribuire un cluster Spark con la scalabilità automatica basata sul carico abilitata.
{
"name": "workernode",
"targetInstanceCount": 4,
"autoscale": {
"capacity": {
"minInstanceCount": 3,
"maxInstanceCount": 10
}
},
"hardwareProfile": {
"vmSize": "Standard_D13_V2"
},
"osProfile": {
"linuxOperatingSystemProfile": {
"username": "[parameters('sshUserName')]",
"password": "[parameters('sshPassword')]"
}
},
"virtualNetworkProfile": null,
"scriptActions": []
}
Scalabilità automatica basata sulla pianificazione
È possibile creare un cluster HDInsight con un modello di ARM per la scalabilità automatica basata sulla pianificazione aggiungendo un nodo autoscale
alla sezione computeProfile
>workernode
. Il nodo autoscale
contiene una recurrence
con timezone
e schedule
che descrive quando si verifica la modifica. Per un modello di ARM completo, vedere Distribuire un cluster Spark con la scalabilità automatica basata sulla pianificazione abilitata.
{
"autoscale": {
"recurrence": {
"timeZone": "Pacific Standard Time",
"schedule": [
{
"days": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday"
],
"timeAndCapacity": {
"time": "11:00",
"minInstanceCount": 10,
"maxInstanceCount": 10
}
}
]
}
},
"name": "workernode",
"targetInstanceCount": 4
}
Abilitare e disabilitare la scalabilità automatica per un cluster in esecuzione
Usare il portale di Azure
Per abilitare la scalabilità automatica in un cluster in esecuzione, selezionare Dimensioni cluster in Impostazioni. Selezionare quindi Enable autoscale
. Selezionare il tipo di scalabilità automatica desiderata e immettere le opzioni per il ridimensionamento basato sul carico o sulla pianificazione. Infine, selezionare Salva.
Tramite l'API REST
Per abilitare o disabilitare la scalabilità automatica in un cluster in esecuzione usando l'API REST, effettuare una richiesta POST all'endpoint di scalabilità automatica:
https://management.azure.com/subscriptions/{subscription Id}/resourceGroups/{resourceGroup Name}/providers/Microsoft.HDInsight/clusters/{CLUSTERNAME}/roles/workernode/autoscale?api-version=2018-06-01-preview
Usare i parametri appropriati nel payload della richiesta. Il payload json seguente può essere usato per enable Autoscale
. Usare il payload {autoscale: null}
per disabilitare la scalabilità automatica.
{ "autoscale": { "capacity": { "minInstanceCount": 3, "maxInstanceCount": 5 } } }
Per una descrizione completa di tutti i parametri di payload, vedere la sezione precedente sull'l'abilitazione della scalabilità automatica basata sul carico. Non è consigliabile disabilitare il servizio di scalabilità automatica in modo forzato in un cluster in esecuzione.
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 descritti nell'elenco seguente.
Stato del cluster | Descrizione |
---|---|
In esecuzione | Il cluster funziona normalmente. Tutte le attività di scalabilità automatica precedenti sono state completate correttamente. |
Aggiornamento | La configurazione della scalabilità automatica del cluster viene aggiornata. |
Configurazione di HDInsight | È in corso un'operazione di aumento o riduzione del cluster. |
Errore di aggiornamento | HDInsight ha risolto i problemi durante l'aggiornamento della configurazione della scalabilità automatica. I clienti possono scegliere di ripetere l'aggiornamento o disabilitare la scalabilità automatica. |
Error | Si è verificato un problema con il cluster e il cluster non è utilizzabile. Eliminare il cluster e creare un nuovo cluster. |
Per visualizzare il numero corrente di nodi nel cluster, passare al grafico Dimensioni cluster nella pagina Panoramica del cluster. In alternativa, selezionare Dimensioni cluster in Impostazioni.
Cronologia delle operazioni
È possibile visualizzare la cronologia degli aumenti e delle riduzioni del cluster come parte delle metriche del cluster. È possibile anche elencare tutte le azioni di ridimensionamento del giorno o della settimana precedente o di un periodo di tempo più lungo.
Selezionare Metriche in Monitoraggio. Selezionare quindi Aggiungi metrica e Numero nodi di lavoro attivi dall'elenco a discesa Metrica. Selezionare il pulsante in alto a destra per modificare l'intervallo di tempo.
Procedure consigliate
Considerare la latenza delle operazioni di aumento o riduzione
Il completamento di un'operazione di ridimensionamento può richiedere da 10 a 20 minuti. Quando si configura una pianificazione personalizzata, pianificare questo ritardo. Ad esempio, se è necessario che le dimensioni del cluster siano 20 alle ore 9:00, impostare il trigger di pianificazione su un'ora precedente, ad esempio le ore 8:30 o prima, in modo che l'operazione di ridimensionamento venga completata entro le ore 9:00.
Preparazione per la riduzione
Durante il processo di riduzione del cluster, la scalabilità automatica rimuove i nodi per soddisfare le dimensioni desiderate. Con la scalabilità automatica basata sul carico, se le attività sono in esecuzione in tali nodi, la scalabilità automatica attende il completamento delle attività per i cluster Spark e Hadoop. Poiché ogni nodo di lavoro svolge anche un ruolo in Hadoop Distributed File System (HDFS), i dati temporanei vengono spostati nei nodi di lavoro rimanenti. Assicurarsi che nei nodi rimanenti sia disponibile spazio sufficiente per ospitare tutti i dati temporanei.
Nota
In caso di riduzione della scalabilità automatica basata sulla pianificazione, la rimozione gestita automaticamente non è supportata. Ciò può causare errori di processo durante un'operazione di riduzione ed è consigliabile definire le pianificazioni in base ai modelli di pianificazione dei processi previsti per includere tempo sufficiente per la conclusione dei processi in corso. È possibile impostare le pianificazioni esaminando la distribuzione cronologica dei tempi di completamento in modo da evitare errori di processo.
Configurare la scalabilità automatica basata sulla pianificazione in base al modello di utilizzo
Quando si configura la scalabilità automatica basata sulla pianificazione, è necessario comprendere il modello di utilizzo del cluster. Il dashboard Grafana consente di comprendere il carico delle query e gli slot di esecuzione. Dal dashboard è possibile ottenere gli slot di esecuzione disponibili e gli slot di esecuzione totali.
Di seguito è indicato un modo per stimare il numero di nodi di lavoro necessari. È consigliabile fornire un altro buffer del 10% per gestire la variazione del carico di lavoro.
Numero di slot di esecuzione usati = Totale slot di esecuzione – Totale slot di esecuzione disponibili.
Numero di nodi di lavoro necessari = Numero di slot di esecuzione realmente usati / (hive.llap.daemon.num.executors + hive.llap.daemon.task.scheduler.wait.queue.size).
*hive.llap.daemon.num.executors è configurabile e l'impostazione predefinita è 4.
*hive.llap.daemon.task.scheduler.wait.queue.size è configurabile e l'impostazione predefinita è 10.
Azioni script personalizzate
Le azioni script personalizzate vengono usate principalmente per personalizzare i nodi (HeadNode / WorkerNodes) che consentono ai clienti di configurare determinate librerie e strumenti usati dai nodi. Un caso d'uso comune è che i processi eseguiti nel cluster potrebbero avere alcune dipendenze dalla libreria di terzi, di proprietà del cliente, e devono essere disponibili nei nodi affinché il processo abbia esito positivo. Per la scalabilità automatica, attualmente sono supportate azioni script personalizzate, che sono persistenti, quindi ogni volta che i nuovi nodi vengono aggiunti al cluster durante l'operazione di aumento delle, queste azioni script persistenti vengono eseguite e pubblicano la loro allocazione dei contenitori o dei processi. Anche se le azioni script personalizzate consentono di eseguire il bootstrap dei nuovi nodi, è consigliabile limitarle al minimo perché si aggiungono alla latenza dell'aumento complessiva e possono causare un impatto sui processi pianificati.
Tenere presente le dimensioni minime del cluster
Non ridurre il cluster a meno di tre nodi. Il ridimensionamento del cluster a meno di tre nodi può comportare un blocco in modalità provvisoria a causa di una replica file insufficiente. Per altre informazioni, vedere Blocco in modalità provvisoria.
Operazioni di ridimensionamento e Microsoft Entra Domain Services
Se si usa un cluster HDInsight con Enterprise Security Package (ESP) aggiunto a un dominio gestito di Microsoft Entra Domain Services, è consigliabile limitare il carico in Microsoft Entra Domain Services. Nella sincronizzazione con ambito di strutture di directory complesse, è consigliabile evitare l'impatto sulle operazioni di ridimensionamento.
Impostare il numero massimo di query simultanee totali della configurazione Hive per lo scenario di utilizzo massimo
Gli eventi di scalabilità automatica non modificano il Numero massimo di query simultanee totali della configurazione Hive in Ambari. Ciò implica che il servizio interattivo Hive Server 2 può gestire solo il numero specificato di query simultanee in un determinato momento, anche se il numero di daemon Interactive Query viene aumentato o diminuito in base al carico e alla pianificazione. Il consiglio generale consiste nell'impostare questa configurazione per lo scenario di utilizzo di picco per evitare interventi manuali.
Tuttavia, è possibile che si verifichi un errore di riavvio di Hive Server 2 se esistono solo pochi nodi di lavoro e il valore configurato per il numero massimo di query simultanee totali è troppo alto. È necessario almeno il numero minimo di nodi di lavoro adatti al numero specificato di Tez Ams
(uguale alla configurazione del numero massimo di query simultanee totali).
Limiti
Conteggio dei daemon Interactive Query
Se i cluster Interactive Query sono abilitati per la scalabilità automatica, un evento di aumento/riduzione automatica aumenta o riduce anche il numero di daemon Interactive Query al numero di nodi di lavoro attivi. La modifica nel numero di daemon non è persistente nella configurazione num_llap_nodes
in Ambari. Se i servizi Hive vengono riavviati manualmente, il numero di daemon Interactive Query viene reimpostato in base alla configurazione in Ambari.
Se il servizio Interactive Query viene riavviato manualmente, è necessario modificare manualmente la configurazione num_llap_node
(il numero di nodi necessari per eseguire il daemon di Query interattivo di Hive) in hive-interactive-env avanzato in modo che corrisponda al numero corrente di nodi di lavoro attivi. Un cluster Interactive Query supporta solo la scalabilità automatica basata sulla pianificazione.
Passaggi successivi
Consultare le linee guida per il ridimensionamento manuale dei cluster in Linee guida per il ridimensionamento.