Best practice per la configurazione dei cluster - Amazon EMR

Best practice per la configurazione dei cluster

Usa le linee guida in questa sezione per determinare i tipi di istanza, le opzioni di acquisto e la quantità di storage di cui effettuare il provisioning per ogni tipo di nodo in un cluster EMR.

Che tipo di istanza utilizzare?

Esistono diversi modi per aggiungere istanze Amazon EC2 a un cluster. Il metodo da scegliere dipende dal fatto che si utilizzi la configurazione dei gruppi di istanze o la configurazione dei parchi istanze per il cluster.

  • Gruppi di istanze

    • Aggiungi manualmente istanze dello stesso tipo a gruppi di istanze principali e dell'attività esistenti.

    • Aggiungi manualmente un gruppo di istanze dell'attività, che può utilizzare un tipo di istanza diverso.

    • Configura la scalabilità automatica in Amazon EMR per un gruppo di istanze, aggiungendo e rimuovendo istanze automaticamente in base al valore di un parametro Amazon CloudWatch specificato. Per ulteriori informazioni, consulta Uso del dimensionamento del cluster.

  • Parchi istanze

    • Aggiungi un singolo parco istanze attività.

    • Cambia la capacità target per istanze on demand e Spot per parchi istanze principale e dell'attività. Per ulteriori informazioni, consulta Configurazione di parchi istanze.

Un modo per pianificare le istanze del cluster è eseguire un cluster di test con un set di dati di esempio rappresentativo e monitorare l'utilizzo dei nodi del cluster. Per ulteriori informazioni, consulta Visualizzazione e monitoraggio di un cluster. Un altro modo è calcolare la capacità delle istanze che si stanno valutando e confrontare tale valore rispetto alle dimensioni dei dati.

In generale: il tipo di nodo primario, che assegna le attività, non richiede un'istanza EC2 con tanta potenza di elaborazione; le istanze Amazon EC2 per il tipo di nodo core, che elaborano le attività e archiviano i dati in HDFS, richiedono sia potenza di elaborazione sia capacità di archiviazione; le istanze Amazon EC2 per il tipo di nodo attività, che non archiviano dati, richiedono solo potenza di elaborazione. Per le linee guida sulle istanze Amazon EC2 disponibili e la relativa configurazione, consulta Configurazione delle istanze Amazon EC2.

Le seguenti linee guida si applicano alla maggior parte dei cluster Amazon EMR.

  • Esiste un limite di vCPU per il numero totale di istanze Amazon EC2 on demand eseguite su un account AWS per Regione AWS. Per ulteriori informazioni sul limite per vCPU e su come richiedere un aumento del limite per l'account, consulta Istanze on demand nella Guida per l'utente per istanze Linux di Amazon EC2.

  • Generalmente, il nodo primario non ha requisiti di calcolo elevati. Per i cluster con un numero elevato di nodi o per i cluster con applicazioni implementate in modo specifico sul nodo primario (JupyterHub, Hue e così via), potrebbe rendersi necessario un nodo primario più grande, che contribuirebbe a migliorare le prestazioni del cluster. Ad esempio, potresti prendere in considerazione l'utilizzo di un'istanza m5.xlarge per cluster piccoli (50 nodi o meno) e l'aumento a un tipo di istanza più grande per cluster più grandi.

  • Le esigenze di calcolo dei nodi principali e di task dipendono dal tipo di elaborazione eseguita dall'applicazione. Molti processi possono essere eseguiti su tipi di istanze per uso generico, che offrono prestazioni bilanciate in termini di CPU, spazio su disco e input/output. Cluster che richiedono molti calcoli possono trarre beneficio dall'esecuzione su istanze con elevata CPU, che hanno proporzionalmente più CPU che RAM. Applicazioni di database e di caching nella memoria possono trarre vantaggio dall'esecuzione su istanze a memoria elevata. Applicazioni che prevedono un uso intensivo della rete e della CPU, ad esempio operazioni di analisi, procedimenti NLP e Machine Learning, possono trarre vantaggio dall'esecuzione su istanze Cluster Compute, che forniscono risorse di CPU proporzionalmente elevate e prestazioni di rete avanzate.

  • Se fasi diverse del cluster hanno diverse esigenze di capacità, puoi iniziare con un numero ridotto di nodi principali e aumentare o diminuire il numero di nodi di task per soddisfare i diversi requisiti di capacità del flusso di elaborazione.

  • La quantità di dati che puoi elaborare dipende dalla capacità dei nodi principali e dalla dimensione dei dati come input, durante l'elaborazione, e come output. I dataset di input, intermedio e di output risiedono tutti sul cluster durante l'elaborazione.

Quando occorre utilizzare le istanze Spot?

Quando avvii un cluster in Amazon EMR, puoi scegliere di avviare istanze primarie, core o attività su istanze spot. Poiché ogni tipo di gruppo di istanze gioca un ruolo diverso nel cluster, esistono implicazioni legate all'avvio di ciascun tipo di nodo sulle istanze Spot. Non è possibile modificare un'opzione di acquisto di un'istanza quando un cluster è in esecuzione. Per passare dalle istanze on demand alle istanze spot o viceversa per i nodi primari e core è necessario terminare il cluster e avviarne uno nuovo. Per i nodi di task, puoi avviare una nuovo gruppo di istanze di task o un parco istanze e rimuovere quella precedente.

Impostazioni di Amazon EMR per impedire gli errori nei processi a causa dell'interruzione delle istanze Spot nei nodi attività

Poiché le istanze Spot vengono spesso utilizzate per eseguire nodi attività, Amazon EMR dispone delle funzionalità predefinite per la pianificazione dei processi YARN in modo che i processi in esecuzione non abbiano esito negativo quando i nodi attività in esecuzione su istanze Spot vengono terminati. Amazon EMR esegue questa operazione consentendo ai processi master delle applicazioni di funzionare solo sui nodi principali. Il processo master dell'applicazione controlla i processi in esecuzione e deve rimanere attivo per tutta la durata del processo.

Amazon EMR rilascio 5.19.0 e successivi utilizzano la caratteristica integrata etichette nodo YARN per questo scopo. (Le versioni precedenti utilizzavano una patch di codice). Le proprietà nelle classificazioni di configurazione yarn-site e capacity-scheduler sono configurate per impostazione predefinita in modo che capacity-scheduler e fair-scheduler YARN sfruttino le etichette dei nodi. Amazon EMR etichetta in automatico i nodi principali con l'etichetta CORE e imposta le proprietà in modo che i master dell'applicazione siano pianificati solo sui nodi con l'etichetta CORE. La modifica manuale delle proprietà correlate nelle classificazioni di configurazione del sito di YARN e del pianificatore di capacità o direttamente nei file XML associati potrebbe interrompere o alterare questa funzionalità.

Per impostazione predefinita, Amazon EMR configura le proprietà e i valori riportati di seguito. Fai attenzione quando configuri queste proprietà.

  • yarn-site (yarn-site.xml) Su tutti i nodi

    • yarn.node-labels.enabled: true

    • yarn.node-labels.am.default-node-label-expression: 'CORE'

    • yarn.node-labels.fs-store.root-dir: '/apps/yarn/nodelabels'

    • yarn.node-labels.configuration-type: 'distributed'

  • yarn-site (yarn-site.xml) su nodi primari e core

    • yarn.nodemanager.node-labels.provider: 'config'

    • yarn.nodemanager.node-labels.provider.configured-node-partition: 'CORE'

  • capacity-scheduler (capacity-scheduler.xml) Su tutti i nodi

    • yarn.scheduler.capacity.root.accessible-node-labels: '*'

    • yarn.scheduler.capacity.root.accessible-node-labels.CORE.capacity: 100

    • yarn.scheduler.capacity.root.default.accessible-node-labels: '*'

    • yarn.scheduler.capacity.root.default.accessible-node-labels.CORE.capacity: 100

Nota

A partire dalla serie di rilascio Amazon EMR 6.x, la funzione etichette nodo YARN è disabilitata per impostazione predefinita. Per impostazione predefinita, i processi primari dell'applicazione possono essere eseguiti sia sui nodi core sia su quelli attività. È possibile abilitare la caratteristica etichette nodo YARN configurando le seguenti proprietà:

  • yarn.node-labels.enabled: true

  • yarn.node-labels.am.default-node-label-expression: 'CORE'

Nodo primario su un'istanza spot

Il nodo primario controlla e gestisce il cluster. Quando termina, termina anche il cluster, pertanto devi avviare il nodo primario come istanza spot solo se stai eseguendo un cluster in cui la terminazione improvvisa è accettabile. Ciò è possibile se stai eseguendo il test di una nuova applicazione, disponi di un cluster che conserva periodicamente i dati in uno store esterno come Amazon S3 o stai eseguendo un cluster in cui il costo è più importante che garantire il completamento del cluster.

Quando avvii il gruppo di istanze primarie come istanza spot, il cluster non si avvia finché tale richiesta di istanza spot non viene soddisfatta. È importare tenere presente ciò quando si seleziona il prezzo Spot massimo.

Puoi aggiungere un nodo primario di istanza spot solo quando avvii il cluster. I nodi primari non possono essere aggiunti o rimossi da un cluster in esecuzione.

In genere, devi eseguire il nodo primario come istanza spot solo se stai eseguendo l'intero cluster (tutti i gruppi di istanze) come istanze spot.

Nodi principali sulle istanze Spot

I nodi principali elaborano dati e memorizzano informazioni utilizzando HDFS. La terminazione di un'istanza principale comporta la perdita dei dati. Per questo motivo, è consigliabile eseguire solo i nodi principali sulle istanze Spot quando la perdita dei dati HDFS parziale è tollerabile.

Quando avvii il gruppo di istanze principale come istanze Spot, Amazon EMR attende finché non puoi effettuare il provisioning di tutte le istanze principali richieste prima di avviare il gruppo di istanze. In altre parole, se richiedi sei istanze Amazon EC2 e solo cinque sono disponibili al prezzo Spot massimo o al di sotto di tale prezzo, il gruppo di istanze non verrà avviato. Amazon EMR continua ad attendere finché tutte e sei le istanze Amazon EC2 non sono disponibili o finché non termini il cluster. È possibile modificare il numero di istanze Spot in un gruppo di istanze principali per aggiungere capacità a un cluster in esecuzione. Per ulteriori informazioni sulle operazioni con i gruppi di istanze e sul funzionamento delle istanze Spot con il parco istanze, consulta Creazione di un cluster con parchi istanze o gruppi di istanze uniformi.

Nodi attività sulle istanze Spot

I nodi di task elaborano i dati, ma non mantengono dati persistenti in HDFS. Se terminano perché il prezzo Spot ha superato il prezzo Spot massimo, nessun dato viene perso e l'effetto sul cluster è minimo.

Quando avvii uno o più gruppi di istanze attività come istanze Spot, Amazon EMR esegue il provisioning di quanti più nodi attività possibili, utilizzando il prezzo Spot massimo. Questo significa che se richiedi un gruppo di istanze attività con sei nodi e solo cinque istanze Spot sono disponibili al o sotto il prezzo Spot massimo, Amazon EMR avvia il gruppo di istanze con cinque nodi, aggiungendo il sesto in seguito, se possibile.

Avviare gruppi di istanze dell'attività come istanze Spot è un modo strategico per espandere la capacità del cluster riducendo i costi. Se avvii i gruppi di istanze primarie e core come istanze on demand, la loro capacità è garantita per l'esecuzione del cluster. Puoi aggiungere istanze dell'attività ai gruppi di istanze dell'attività in base alle esigenze, per gestire picchi di traffico o velocizzare l'elaborazione dei dati.

Puoi aggiungere o rimuovere i nodi di task utilizzando la console, AWS CLI o API. Puoi anche aggiungere altri gruppi di attività, ma non puoi rimuovere un gruppo di attività dopo che è stato creato.

Configurazioni di istanze per scenari applicativi

La tabella seguente è un riferimento rapido per le opzioni di acquisto e le configurazioni dei tipi di nodo in genere appropriate per vari scenari applicativi. Scegli il link per visualizzare ulteriori informazioni su ciascun tipo di scenario.

Scenario applicativo Opzione di acquisto per i nodi primari Opzione di acquisto per i nodi principali Opzione di acquisto per i nodi attività
Cluster di lunga durata e data warehouse On demand Combinazione di on demand o parco istanze Combinazione di Spot o parco istanze
Carichi di lavoro basati sui costi Spot Spot Spot
Carichi di lavoro critici On demand On demand Combinazione di Spot o parco istanze
Test dell'applicazione Spot Spot Spot

Esistono diversi scenari in cui le istanze Spot sono utili per l'esecuzione di un cluster Amazon EMR.

Cluster di lunga durata e data warehouse

Se stai eseguendo un cluster Amazon EMR persistente caratterizzato da una variazione prevedibile della capacità di elaborazione, ad esempio un data warehouse, puoi gestire picchi di domanda a costi inferiori con istanze Spot. Puoi avviare gruppi di istanze primarie e core come istanze on demand per gestire la normale capacità e avviare il gruppo di istanze attività come istanze spot per gestire i requisiti di carico di picco.

Carichi di lavoro basati sui costi

Se stai eseguendo cluster transitori per i quali un costo inferiore è più importante del tempo necessario per il completamento e la perdita parziale del lavoro è accettabile, puoi eseguire l'intero cluster (gruppi di istanze primarie, core e attività) come istanze spot per trarre vantaggio dal maggiore risparmio sui costi.

Carichi di lavoro critici

Se stai eseguendo un cluster per i quale un costo inferiore è più importante del tempo necessario per il completamento, ma la perdita parziale del lavoro non è accettabile, avvia i gruppi di istanze primarie e core come istanze on demand e integra con uno o più gruppi di istanze attività di istanze spot. L'esecuzione di gruppi di istanze primarie e core come istanze on demand garantisce che i dati vengono mantenuti in HDFS e che il cluster sia protetto dalla terminazione dovuta a fluttuazioni del mercato spot, fornendo al contempo risparmi sui costi derivanti dall'esecuzione di gruppi di istanze attività come istanze spot.

Test dell'applicazione

Quando esegui il test di una nuova applicazione come preparazione all'avvio in un ambiente di produzione, puoi eseguire l'intero cluster (gruppi di istanze primarie, core e attività) come istanze spot per ridurre i costi di test.

Calcolo della capacità HDFS richiesta di un cluster

La quantità di storage HDFS disponibile per il cluster dipende dai seguenti fattori:

  • Il numero di istanze Amazon EC2 usate per nodi principali.

  • La capacità dell'archivio istanza Amazon EC2 per il tipo di istanza usato. Per ulteriori informazioni sui volumi dell'archivio istanza, consulta Archivio istanza Amazon EC2 nella Guida per l'utente di Amazon EC2 per le istanze Linux.

  • Il numero e la dimensione dei volumi Amazon EBS collegati ai nodi principali.

  • Un fattore di replica, che tiene conto del modo in cui ogni blocco di dati viene archiviato in HDFS per ridondanza di tipo RAID. Per impostazione predefinita, il fattore di replica è tre per un cluster di almeno 10 nodi principali, due per un cluster di 4-9 nodi principali e uno per un cluster di massimo tre nodi.

Per calcolare la capacità HDFS di un cluster, per ogni nodo principale aggiungi la capacità del volume instance store alla capacità di archiviazione Amazon EBS (se utilizzata). Moltiplica il risultato per il numero di nodi principali, quindi dividi il totale per il fattore di replica in base al numero di nodi principali. Ad esempio, un cluster con 10 nodi principali di tipo i2.xlarge, che dispone di 800 GB di storage dell'istanza senza alcun volume Amazon EBS collegato, dispone di un totale di circa 2.666 GB disponibili per HDFS (10 nodi x 800 GB ÷ fattore di replica 3).

Se il valore di capacità HDFS calcolato è inferiore ai dati, puoi aumentare la quantità di storage HDFS nei seguenti modi:

  • Creando un cluster con volumi Amazon EBS aggiuntivi o aggiungendo gruppi di istanze con volumi Amazon EBS collegati a un cluster esistente

  • Aggiungendo più nodi principali

  • Scegliendo un tipo di istanza Amazon EC2 con maggiore capacità di archiviazione

  • Utilizzando la compressione dati

  • Modificando le impostazioni di configurazione Hadoop per ridurre il fattore di replica

La riduzione del fattore di replica deve essere utilizzata con attenzione poiché riduce la ridondanza dei dati HDFS e la capacità del cluster di recuperare da blocchi HDFS persi o danneggiati.