View a markdown version of this page

Scalabilità avanzata per Amazon EMR - Amazon EMR

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Scalabilità avanzata per Amazon EMR

A partire da Amazon EMR su EC2 versione 7.0, puoi sfruttare Advanced Scaling per controllare l'utilizzo delle risorse del tuo cluster. Advanced Scaling introduce una scala di utilizzo e prestazioni per ottimizzare l'utilizzo delle risorse e il livello di prestazioni in base alle esigenze aziendali. Il valore impostato determina se il cluster è più orientato alla conservazione delle risorse o alla scalabilità per gestire carichi di lavoro sensibili agli SLA (Service Level Agreement), per i quali il completamento rapido è fondamentale. Quando il valore di scalabilità viene regolato, la scalabilità gestita interpreta le tue intenzioni e si adatta in modo intelligente per ottimizzare le risorse. Per ulteriori informazioni sulla scalabilità gestita, consulta Configurare la scalabilità gestita per Amazon EMR.

Impostazioni di scalabilità avanzate

Il valore impostato per Advanced Scaling ottimizza il cluster in base alle tue esigenze. I valori vanno da 1 a 100. I valori possibili sono 1, 25, 50, 75 e 100. Se si imposta l'indice su valori diversi da questi, si verifica un errore di convalida.

I valori di ridimensionamento si associano alle strategie di utilizzo delle risorse. L'elenco seguente ne definisce alcuni:

  • Utilizzo ottimizzato [1]: questa impostazione impedisce il provisioning eccessivo delle risorse. Utilizzate un valore basso quando desiderate mantenere bassi i costi e dare priorità all'utilizzo efficiente delle risorse. Fa sì che il cluster si ingrandisca in modo meno aggressivo. Questa soluzione è ideale per i casi d'uso in cui si verificano regolarmente picchi di carico di lavoro e non si desidera che le risorse si accumulino troppo rapidamente.

  • Equilibrato [50]: bilancia l'utilizzo delle risorse e le prestazioni lavorative. Questa impostazione è adatta per carichi di lavoro costanti in cui la maggior parte delle fasi ha un runtime stabile. È adatta anche per carichi di lavoro con un mix di fasi di breve e lunga durata. Ti consigliamo di iniziare con questa impostazione se non sei sicuro di quale scegliere.

  • Prestazioni ottimizzate [100]: questa strategia dà priorità alle prestazioni. Il cluster si espande in modo aggressivo per garantire che i lavori vengano completati rapidamente e soddisfino gli obiettivi prestazionali. L'ottimizzazione delle prestazioni è adatta per carichi di lavoro sensibili agli accordi sui livelli di servizio (SLA) in cui i tempi di esecuzione rapidi sono fondamentali.

Nota

I valori intermedi disponibili forniscono una via di mezzo tra le strategie per ottimizzare il comportamento di Advanced Scaling del cluster.

Vantaggi dell'Advanced Scaling

Data la variabilità dell'ambiente e dei requisiti, ad esempio la modifica dei volumi di dati, l'adeguamento degli obiettivi di costo e le implementazioni degli SLA, la scalabilità del cluster può aiutarti a modificare la configurazione del cluster per raggiungere i tuoi obiettivi. I vantaggi principali includono:

  • Controllo granulare migliorato: l'introduzione dell'impostazione delle prestazioni di utilizzo consente di regolare facilmente il comportamento di scalabilità del cluster in base alle proprie esigenze. Puoi scalare verso l'alto per soddisfare la domanda di risorse di calcolo o ridimensionare per risparmiare risorse, in base ai tuoi modelli di utilizzo.

  • Migliore ottimizzazione dei costi: è possibile scegliere un valore di utilizzo basso in base ai requisiti richiesti per raggiungere più facilmente gli obiettivi di costo.

Guida introduttiva all'ottimizzazione

Installazione e configurazione

Usa questi passaggi per impostare l'indice delle prestazioni e ottimizzare la tua strategia di scalabilità.

  1. Il comando seguente aggiorna un cluster esistente con la strategia di scalabilità ottimizzata per l'utilizzo: [1]

    aws emr put-managed-scaling-policy --cluster-id 'cluster-id' \ --managed-scaling-policy '{ "ComputeLimits": { "UnitType": "Instances", "MinimumCapacityUnits": 1, "MaximumCapacityUnits": 2, "MaximumOnDemandCapacityUnits": 2, "MaximumCoreCapacityUnits": 2 }, "ScalingStrategy": "ADVANCED", "UtilizationPerformanceIndex": "1" }' \ --region "region-name"

    Gli attributi ScalingStrategy e UtilizationPerformanceIndex sono nuovi e pertinenti per l'ottimizzazione della scalabilità. È possibile selezionare diverse strategie di ridimensionamento impostando i valori corrispondenti (1, 25, 50, 75 e 100) per l'UtilizationPerformanceIndexattributo nella politica di scalabilità gestita.

  2. Per tornare alla strategia di scalabilità gestita predefinita, esegui il comando senza includere gli attributi and. put-managed-scaling-policy ScalingStrategy UtilizationPerformanceIndex (Questa operazione è facoltativa). Questo esempio mostra come eseguire questa operazione:

    aws emr put-managed-scaling-policy \ --cluster-id 'cluster-id' \ --managed-scaling-policy '{"ComputeLimits":{"UnitType":"Instances","MinimumCapacityUnits":1,"MaximumCapacityUnits":2,"MaximumOnDemandCapacityUnits":2,"MaximumCoreCapacityUnits":2}}' \ --region "region-name"

Utilizzo delle metriche di monitoraggio per tracciare l'utilizzo dei cluster

A partire dalla versione 7.3.0 di EMR, Amazon EMR pubblica quattro nuove metriche relative alla memoria e alla CPU virtuale. Puoi utilizzarli per misurare l'utilizzo del cluster nelle strategie di scalabilità. Queste metriche sono disponibili per qualsiasi caso d'uso, ma puoi utilizzare i dettagli forniti qui per monitorare Advanced Scaling.

Le metriche utili disponibili includono quanto segue:

  • YarnContainersUsedMemoryGBSeconds— Quantità di memoria consumata dalle applicazioni gestite da YARN.

  • YarnContainersTotalMemoryGBSeconds— Capacità di memoria totale allocata a YARN all'interno del cluster.

  • YarnNodesUsedVCPUSeconds— Secondi VCPU totali per ogni applicazione gestita da YARN.

  • YarnNodesTotalVCPUSeconds— Secondi VCPU totali aggregati per la memoria consumata, inclusa la finestra temporale in cui il filato non è pronto.

Puoi analizzare le metriche delle risorse utilizzando Logs Insights. Amazon CloudWatch Le funzionalità includono un linguaggio di interrogazione creato appositamente che consente di estrarre metriche specifiche per l'uso e la scalabilità delle risorse.

La seguente query, che è possibile eseguire nella Amazon CloudWatch console, utilizza la matematica metrica per calcolare l'utilizzo medio della memoria (e1) dividendo la somma corrente della memoria consumata (e2) per la somma progressiva della memoria totale (e3):

{ "metrics": [ [ { "expression": "e2/e3", "label": "Average Mem Utilization", "id": "e1", "yAxis": "right" } ], [ { "expression": "RUNNING_SUM(m1)", "label": "RunningTotal-YarnContainersUsedMemoryGBSeconds", "id": "e2", "visible": false } ], [ { "expression": "RUNNING_SUM(m2)", "label": "RunningTotal-YarnContainersTotalMemoryGBSeconds", "id": "e3", "visible": false } ], [ "AWS_EMR_ManagedResize", "YarnContainersUsedMemoryGBSeconds", "ACCOUNT_ID", "793684541905", "COMPONENT", "ManagerService", "JOB_FLOW_ID", "cluster-id", { "id": "m1", "label": "YarnContainersUsedMemoryGBSeconds" } ], [ ".", "YarnContainersTotalMemoryGBSeconds", ".", ".", ".", ".", ".", ".", { "id": "m2", "label": "YarnContainersTotalMemoryGBSeconds" } ] ], "view": "timeSeries", "stacked": false, "region": "region", "period": 60, "stat": "Sum", "title": "Memory Utilization" }

Per interrogare i log, puoi selezionare nella console. CloudWatch AWS Per ulteriori informazioni sulla scrittura di query per CloudWatch, consulta Analyzing log data with CloudWatch Logs Insights nella Amazon CloudWatch Logs User Guide.

L'immagine seguente mostra queste metriche per un cluster di esempio:

Grafico che mostra le statistiche di utilizzo.

Considerazioni e limitazioni

  • L'efficacia delle strategie di scalabilità può variare a seconda delle caratteristiche specifiche del carico di lavoro e della configurazione del cluster. Ti invitiamo a sperimentare l'impostazione di scalabilità per determinare un valore di indice ottimale per il tuo caso d'uso.

  • Amazon EMR Advanced Scaling è particolarmente adatto per carichi di lavoro in batch. Per carichi di lavoro SQL/data-warehousing e streaming, consigliamo di utilizzare la strategia di scalabilità gestita predefinita per prestazioni ottimali.

  • Amazon EMR Advanced Scaling non è supportato quando le configurazioni delle etichette dei nodi sono abilitate nel cluster. Se sia Advanced Scaling che Node Label Configurations sono abilitate insieme in un cluster, il comportamento di scalabilità sarebbe come se l'impostazione di scalabilità gestita predefinita fosse abilitata.

  • La strategia di scalabilità ottimizzata per le prestazioni consente un'esecuzione più rapida dei job mantenendo elevate risorse di calcolo per un periodo più lungo rispetto alla strategia di scalabilità gestita predefinita. Questa modalità dà priorità alla scalabilità rapida per soddisfare le richieste di risorse, con conseguente completamento più rapido del lavoro. Ciò potrebbe comportare costi più elevati rispetto alla strategia predefinita.

  • Nei casi in cui il cluster è già ottimizzato e completamente utilizzato, l'abilitazione di Advanced Scaling potrebbe non fornire vantaggi aggiuntivi. In alcune situazioni, l'abilitazione di Advanced Scaling potrebbe comportare un aumento dei costi poiché i carichi di lavoro potrebbero durare più a lungo. In questi casi, consigliamo di utilizzare la strategia di scalabilità gestita predefinita per garantire un'allocazione ottimale delle risorse e l'efficienza dei costi.

  • Nel contesto della scalabilità gestita, l'accento si sposta sull'utilizzo delle risorse rispetto al tempo di esecuzione, poiché l'impostazione viene modificata da ottimizzata per le prestazioni [100] a ottimizzata per l'utilizzo [1]. Tuttavia, è importante notare che i risultati potrebbero variare in base alla natura del carico di lavoro e alla topologia del cluster. Per garantire risultati ottimali per il tuo caso d'uso, ti consigliamo vivamente di testare le strategie di scalabilità con i carichi di lavoro per determinare l'impostazione più adatta.

  • PerformanceUtilizationIndexAccetta solo i seguenti valori:

    • 1

    • 25

    • 50

    • 75

    • 100

    Qualsiasi altro valore inviato genera un errore di convalida.