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. La funzionalità di scalabilità automatica funziona ridimensionando il numero di nodi entro limiti predefiniti in base alle metriche delle prestazioni o a una pianificazione definita delle operazioni di aumento e riduzione delle prestazioni

Funzionamento

La funzionalità di scalabilità automatica usa due tipi di condizioni per attivare gli eventi di ridimensionamento: soglie per varie metriche delle prestazioni del cluster (denominata ridimensionamento basato 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.

Il video seguente offre una panoramica delle sfide che la scalabilità automatica risolve e come può essere utile per controllare i costi con HDInsight.

Scelta del ridimensionamento basato sul carico o basato su pianificazione

È possibile usare il ridimensionamento basato sulla pianificazione:

  • Quando si prevede che i processi vengano eseguiti in base a pianificazioni fisse e per una durata prevedibile o Quando si prevede un utilizzo ridotto durante orari specifici del giorno, ad esempio ambienti di test e sviluppo in orari di lavoro post-lavoro, processi di fine giornata.

È possibile usare il ridimensionamento basato sul carico:

  • Quando i modelli di carico fluttuano in modo sostanziale e imprevedibile durante il giorno. Ad esempio, ordinare l'elaborazione dei dati con fluttuazioni casuali nei modelli di carico in base a 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 ospita zero contenitori AM.

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.

Condizioni di scalabilità in base al carico

Quando vengono rilevate le condizioni seguenti, la scalabilità automatica invia una richiesta di scalabilità:

Aumentare Riduzione
La CPU totale in sospeso è maggiore del totale della CPU gratuita per più di 3-5 minuti. La CPU totale in sospeso è inferiore al totale della CPU gratuita per più di 3-5 minuti.
La memoria totale in sospeso è maggiore della memoria totale disponibile per più di 3-5 minuti. La memoria totale in sospeso è inferiore alla memoria totale disponibile per più di 3-5 minuti.

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.

Per ridurre le prestazioni, la scalabilità automatica invia una richiesta di rimozione di alcuni nodi. La riduzione è basata sul numero di contenitori Master applicazione (AM) per nodo. E i requisiti correnti di 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 ridimensionamento del database Ambari per la scalabilità automatica

È consigliabile ridimensionare 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 le raccomandazioni relative al dimensionamento 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 vuole usare la funzionalità di scalabilità automatica nel cluster, è consigliabile creare un nuovo cluster e abilitare la scalabilità automatica 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 Spark, Hadoop e Interactive Query, cluster

Nella tabella seguente vengono descritti 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ì* No No
HDInsight 4.0 con ESP Sì* No No
HDInsight 5.0 senza ESP Sì* No No
HDInsight 5.0 con ESP 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 scalabilità basata sul carico, completare i passaggi seguenti come parte del normale processo di creazione del cluster:

  1. Nella scheda Configurazione e prezzi selezionare la casella di controllo Abilita scalabilità automatica.

  2. Selezionare Load-based in Autoscale type (Tipo di scalabilità automatica).

  3. Immettere i valori previsti per le proprietà seguenti:

    • Numero iniziale di nodi per il nodo del ruolo di lavoro.
    • Numero minimo di nodi di lavoro.
    • Numero massimo di nodi di lavoro.

    Enable worker node load-based autoscale.

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 al momento della creazione. 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 di file insufficiente. Per altre informazioni, vedere Blocco in modalità provvisoria.

Creare un cluster con scalabilità automatica basata su pianificazione

Per abilitare la funzionalità di scalabilità automatica con scalabilità basata su pianificazione, completare i passaggi seguenti come parte del normale processo di creazione del cluster:

  1. Nella scheda Configurazione e prezzi selezionare la casella di controllo Abilita scalabilità automatica.

  2. Immettere il numero di nodi per il nodo del ruolo di lavoro, che controlla il limite per aumentare le prestazioni del cluster.

  3. Selezionare l'opzione Schedule-based in Autoscale type (Tipo di scalabilità automatica).

  4. Selezionare Configura per aprire la finestra di configurazione della scalabilità automatica.

  5. Selezionare il fuso orario e quindi fare clic su + Aggiungi condizione

  6. Selezionare i giorni della settimana a cui applicare la nuova condizione.

  7. Modificare l'ora in cui la condizione deve essere applicata e il numero di nodi su cui deve essere ridimensionato il cluster.

  8. Aggiungi più condizioni se necessario.

    Enable worker node schedule-based creation.

Il numero di nodi deve essere compreso tra 3 e il numero massimo di nodi di lavoro immessi prima di aggiungere condizioni.

Passaggi finali per la creazione

Selezionare il tipo di macchina virtuale per i nodi di lavoro selezionando una macchina virtuale dall'elenco a discesa in Dimensioni nodo. Dopo aver scelto il tipo di macchina virtuale per ogni tipo di nodo, è possibile visualizzare l'intervallo di costi stimato per l'intero cluster. Modificare i tipi di macchina virtuale in base al budget.

Enable worker node schedule-based autoscale node size.

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 totale di core, verrà visualizzato un messaggio di errore che indica che il nodo massimo ha superato i core disponibili in questa area, 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 scalabilità automatica basata sul carico di un modello di Azure Resource Manager aggiungendo un autoscale nodo alla computeProfileworkernode>sezione con le proprietà minInstanceCount e maxInstanceCount come illustrato nel frammento json. Per un modello di Resource Manager completo, vedere Modello di avvio rapido: Distribuire un cluster Spark con scalabilità automatica basata sul carico abilitato.

{
  "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 su pianificazione

È possibile creare un cluster HDInsight con scalabilità automatica basata sulla pianificazione di un modello di Azure Resource Manager aggiungendo un autoscale nodo alla computeProfile>workernode sezione . Il autoscale nodo contiene un oggetto che contiene un timezonerecurrence oggetto e schedule che descrive quando viene eseguita la modifica. Per un modello di Resource Manager completo, vedere Distribuire un cluster Spark con scalabilità automatica basata su 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

Tramite il portale di Azure

Per abilitare la scalabilità automatica in un cluster in esecuzione, selezionare Dimensioni cluster in Impostazioni. Selezionare quindi Abilita scalabilità automatica. Selezionare il tipo di scalabilità automatica desiderata e immettere le opzioni per il ridimensionamento basato sul carico o sulla pianificazione. Infine, selezionare Salva.

Enable worker node schedule-based autoscale running cluster.

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 abilitare la scalabilità automatica. Usare il payload {autoscale: null} per disabilitare la scalabilità automatica.

{ "autoscale": { "capacity": { "minInstanceCount": 3, "maxInstanceCount": 5 } } }

Vedere la sezione precedente sull'abilitazione della scalabilità automatica basata sul carico per una descrizione completa di tutti i parametri del payload. 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 nella portale di Azure consente di monitorare le attività di scalabilità automatica.

Enable worker node load-based autoscale cluster status.

Tutti i messaggi di stato del cluster visualizzati sono illustrati 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 delle prestazioni del cluster.
Errore di aggiornamento HDInsight ha soddisfatto 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 non è utilizzabile. Eliminare questo cluster e crearne uno nuovo.

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 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 di tempo.

Selezionare Metriche in Monitoraggio. Selezionare quindi Aggiungi metrica e Numero di ruoli di lavoro attivi nella casella di riepilogo a discesa Metrica . Selezionare il pulsante in alto a destra per modificare l'intervallo di tempo.

Enable worker node schedule-based autoscale metric.

Procedure consigliate

Prendere in considerazione la latenza delle operazioni di aumento e riduzione delle prestazioni

Il completamento dell'operazione di ridimensionamento complessiva 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 9:00, impostare il trigger di pianificazione su un'ora precedente, ad esempio le 8:30 o versioni precedenti, in modo che l'operazione di ridimensionamento sia stata completata entro le 9:00.

Prepararsi per la riduzione delle prestazioni

Durante il processo di riduzione delle prestazioni del cluster, la scalabilità automatica rimuove le autorizzazioni dei nodi per soddisfare le dimensioni di destinazione. 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 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 delle autorizzazioni normale non è supportata. Ciò può causare errori di processo durante un'operazione di riduzione delle prestazioni ed è consigliabile pianificare 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 su pianificazione in base al modello di utilizzo

È necessario comprendere il modello di utilizzo del cluster quando si configura la scalabilità automatica basata sulla pianificazione. Il dashboard di Grafana consente di comprendere il carico delle query e gli slot di esecuzione. È possibile ottenere gli slot executor disponibili e gli slot executor totali dal dashboard.

Ecco 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 executor usati = Slot executor totali: slot executor totali disponibili.

Numero di nodi di lavoro necessari = Numero di slot executor effettivamente usati / (hive.llap.daemon.num.executors + hive.llap.daemon.task.scheduler.wait.queue.size)

*hive.llap.daemon.num.executors è configurabile e il valore predefinito è 4

*hive.llap.daemon.task.scheduler.wait.queue.size è configurabile e il valore predefinito è 10

Azioni script personalizzate

Le azioni script personalizzate vengono usate principalmente per personalizzare i nodi (ad esempio HeadNode/WorkerNodes) che consentono ai clienti di configurare determinate librerie e strumenti, che vengono usati da essi. Un caso d'uso comune è che i processi eseguiti nel cluster potrebbero avere alcune dipendenze dalla libreria di terze parti, 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 vengono rese persistenti, quindi ogni volta che i nuovi nodi vengono aggiunti al cluster come parte dell'operazione di aumento delle prestazioni, queste azioni script persistenti vengono eseguite e pubblicano la loro allocazione dei contenitori o dei processi. Anche se le azioni di script personalizzate consentono di eseguire il bootstrap dei nuovi nodi, è consigliabile mantenerla minima perché si aggiunge alla latenza complessiva di aumento delle prestazioni e può 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 di file insufficiente. Per altre informazioni, vedere Blocco in modalità provvisoria.

Operazioni di ridimensionamento e servizi di dominio Microsoft Entra

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 nei Servizi di dominio Microsoft Entra. Nella sincronizzazione con ambito delle strutture di directory complesse è consigliabile evitare l'impatto sulle operazioni di ridimensionamento.

Impostare la configurazione hive Numero massimo di query simultanee per lo scenario di utilizzo massimo

Gli eventi di scalabilità automatica non modificano la configurazione Hive Numero massimo di query simultanee in Ambari. Ciò significa che il servizio interattivo Hive Server 2 può gestire solo il numero specificato di query simultanee in qualsiasi momento, anche se il numero di daemon Interactive Query viene ridimensionato in base al carico e alla pianificazione. La raccomandazione generale consiste nell'impostare questa configurazione per lo scenario di utilizzo massimo per evitare l'intervento manuale.

Tuttavia, è possibile che si verifichi un errore di riavvio di Hive Server 2 se sono presenti solo pochi nodi di lavoro e il valore per le query simultanee massime è configurato troppo alto. È necessario almeno il numero minimo di nodi di lavoro che possono contenere il numero specificato di Tez Ams (uguale alla configurazione Numero massimo di query simultanee).

Limiti

Conteggio dei daemon di Query interattive

Se i cluster Interactive Query 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 num_llap_nodes configurazione 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 num_llap_node configurazione (il numero di nodi necessari per eseguire il daemon di Query interattive Hive) in Advanced hive-interactive-env in modo che corrisponda al numero di nodi di lavoro attivo corrente. Il cluster Interactive Query supporta solo la scalabilità automatica basata su pianificazione

Passaggi successivi

Leggere le linee guida per il ridimensionamento manuale dei cluster nelle linee guida per il ridimensionamento