Configurazione di parchi istanze - 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à.

Configurazione di parchi istanze

Nota

La configurazione dei parchi istanze è disponibile solo in Amazon EMR rilasci 4.8.0 e successivi, esclusi i rilasci 5.0.0 e 5.0.3.

La configurazione del parco istanze per i cluster Amazon EMR ti consente di selezionare un'ampia gamma di opzioni di provisioning per le istanze Amazon EC2 e ti aiuta a sviluppare una strategia di risorse flessibile ed elastica per ogni tipo di nodo nel cluster.

Nella configurazione di un parco istanze, specifica una target capacity (capacità target) per le On-Demand Instances (istanze on demand) e le Spot Instances (istanze Spot) all'interno di ogni parco istanze. All'avvio del cluster, Amazon EMR effettua il provisioning di istanze fino al raggiungimento delle capacità target. Mentre un cluster è in esecuzione, se Amazon EC2 recupera un'istanza Spot a causa di un aumento del prezzo o dell'esito negativo di un'istanza, Amazon EMR prova a sostituire l'istanza con uno qualsiasi dei tipi di istanze specificati. In questo modo è più semplice riguadagnare la capacità durante un picco dei prezzi Spot.

Puoi specificare un massimo di cinque tipi di istanze Amazon EC2 per flotta da utilizzare per il raggiungimento degli obiettivi o un massimo di 30 tipi di istanze Amazon EC2 per flotta quando crei un cluster utilizzando l'API o AWS CLI Amazon EMR e una strategia di allocazione per istanze On-Demand e Spot.

Puoi anche selezionare più sottoreti per zone di disponibilità differenti. Quando Amazon EMR avvia il cluster, viene eseguita una ricerca in tali sottoreti per individuare le istanze e le opzioni di acquisto specificate. Se Amazon EMR rileva un evento AWS su larga scala in una o più zone di disponibilità, Amazon EMR tenta automaticamente di indirizzare il traffico lontano dalle zone di disponibilità interessate e tenta di lanciare nuovi cluster che crei in zone di disponibilità alternative in base alle tue selezioni. La selezione della zona di disponibilità del cluster avviene solo alla creazione del cluster. I nodi del cluster esistenti non vengono riavviati automaticamente in una nuova zona di disponibilità in caso di interruzione della zona di disponibilità.

Considerazioni

Considera gli elementi seguenti quando utilizzi il parco istanze con Amazon EMR.

  • Puoi avere uno e un solo parco istanze per tipo di nodo (primario, principale, attività). Puoi specificare fino a cinque tipi di istanze Amazon EC2 per ogni flotta del parco istanze AWS Management Console (o un massimo di 30 tipi per flotta di istanze quando crei un cluster utilizzando l'API AWS CLI Amazon EMR e una). Strategia di allocazione per parchi istanze

  • Amazon EMR sceglie uno o tutti i tipi di istanze Amazon EC2 specificati per effettuare il provisioning con opzioni di acquisto Spot e on demand.

  • Puoi definire capacità target per istanze Spot e on demand per il parco istanze principale e il parco istanze attività. Utilizza vCPU o un'unità generica assegnata a ogni istanza Amazon EC2 che esegue il conteggio per il raggiungimento del target. Amazon EMR effettua il provisioning di istanze finché ogni capacità target non viene completamente raggiunta. Per il parco istanze primarie, il target è sempre uno.

  • Puoi scegliere una sottorete (zona di disponibilità) o un intervallo. Se selezioni un intervallo, Amazon EMR effettua il provisioning della capacità nella zona di disponibilità più adatta.

  • Quando si specifica una capacità target per istanze Spot:

    • Per ogni tipo di istanza, specifica un prezzo Spot massimo. Amazon EMR effettua il provisioning delle istanze Spot se il prezzo Spot è inferiore al prezzo Spot massimo. L'utente paga il prezzo Spot, non necessariamente il prezzo Spot massimo.

    • Per ogni parco istanze, definire un periodo di timeout per il provisioning delle istanze Spot. Se Amazon EMR non è in grado di eseguire il provisioning della capacità Spot, è possibile terminare il cluster o passare al provisioning della capacità on demand. Ciò vale solo per il provisioning dei cluster, non per il loro ridimensionamento. Se il periodo di timeout termina durante il processo di ridimensionamento del cluster, le richieste Spot non sottoposte a provisioning verranno annullate senza il trasferimento alla capacità on demand.

  • Per ogni parco istanze, puoi specificare una delle seguenti strategie di allocazione per le istanze Spot: ottimizzata per prezzo e capacità, ottimizzata per capacità, prezzo più basso o diversificata in tutti i pool.

  • Per ogni parco istanze, puoi applicare la strategia di allocazione del prezzo più basso per le istanze On-Demand; non puoi personalizzare la strategia di allocazione per le istanze On-Demand.

  • Per ogni parco istanze con allocation strategy - lowest-price on demand, è possibile scegliere di applicare le opzioni di prenotazione della capacità.

  • Verifica le dimensioni della sottorete prima di avviare il cluster. Quando si esegue il provisioning di un cluster con un parco attività e non ci sono sufficienti indirizzi IP disponibili nella sottorete corrispondente, il parco istanze entrerà in uno stato sospeso anziché terminare il cluster con un errore. Per evitare questo problema, si consiglia di aumentare il numero di indirizzi IP nelle sottoreti.

Opzioni del parco istanze

Utilizza le seguenti linee guida per comprendere le opzioni del parco istanze.

Impostazione delle capacità target

Specifica le capacità target desiderate per il parco istanze core e il parco istanze di attività. Una volta fatto, ciò determina il numero di istanze on demand e istanze Spot di cui Amazon EMR effettua il provisioning. Durante la specifica di un'istanza è l'utente che decide la misura di conteggio di ogni istanza per il raggiungimento del target. Quando si effettua il provisioning di un'istanza on demand, esegue il conteggio fino al raggiungimento della capacità target on demand. Lo stesso vale per istanze Spot. A differenza dei parchi istanze core e attività, il parco istanze primarie è sempre un'unica istanza. Pertanto, la capacità target di questo parco istanze è sempre uno.

Quando utilizzi la console, il vCPU del tipo di istanza Amazon EC2 viene utilizzato come il conteggio per le capacità target per impostazione predefinita. È possibile modificare questo conteggio in unità generiche, quindi specificare il conteggio per ogni tipo di istanza EC2. Quando usi il AWS CLI, assegni manualmente unità generiche per ogni tipo di istanza.

Importante

Quando scegli un tipo di istanza utilizzando il AWS Management Console, il numero di vCPU mostrato per ogni tipo di istanza è il numero di vcore YARN per quel tipo di istanza, non il numero di vCPU EC2 per quel tipo di istanza. Per ulteriori informazioni sul numero di vCPU per ogni tipo di istanza, consulta Tipi di istanza di Amazon EC2.

Per ogni parco istanze, specifica fino a cinque tipi di istanza Amazon EC2. Se utilizzi Strategia di allocazione per parchi istanze e crei un cluster utilizzando l' AWS CLI API Amazon EMR, puoi specificare fino a 30 tipi di istanze EC2 per flotta di istanze. Amazon EMR sceglie qualsiasi combinazione di questi tipi di istanza EC2 per raggiungere le capacità target. Poiché l'obiettivo di Amazon EMR è raggiungere la capacità target completa, si possono verificare costi aggiuntivi. Ad esempio, se la capacità di due unità non viene raggiunta e Amazon EMR è in grado di effettuare il provisioning di un'istanza con un conteggio di cinque unità, il provisioning dell'istanza viene ancora effettuato, ossia la capacità target viene superata di tre unità.

Se riduci la capacità target per ridimensionare un cluster in esecuzione, Amazon EMR tenta di completare le attività dell'applicazione e termina le istanze per soddisfare il nuovo target. Per ulteriori informazioni, consulta Terminazione al completamento dell'attività.

Opzioni di avvio

Per le istanze Spot, puoi specificare un Maximum Spot price (Prezzo Spot massimo) per ogni tipo di istanza in un parco istanze. Puoi impostare questo prezzo come una percentuale del prezzo on demand o come un importo in dollari specifico. Amazon EMR effettua il provisioning di istanze Spot se il prezzo Spot corrente in una zona di disponibilità è inferiore al prezzo Spot massimo. L'utente paga il prezzo Spot, non necessariamente il prezzo Spot massimo.

Nota

Le istanze spot con una durata definita (note anche come blocchi Spot) non sono più disponibili per i nuovi clienti a partire dal 1° luglio 2021. Per i clienti che hanno già utilizzato la funzione, continueremo a supportare le istanze spot con una durata definita fino al 31 dicembre 2022.

In Amazon EMR 5.12.1 e versioni successive hai la possibilità di avviare parchi di istanze Spot e on demand con allocazione della capacità ottimizzata. Questa opzione di strategia di allocazione può essere impostata nella vecchia versione AWS Management Console o utilizzando l'API. RunJobFlow Tieni presente che non è possibile personalizzare la strategia di allocazione nella nuova console. L'utilizzo della strategia di allocazione richiede autorizzazioni aggiuntive per il ruolo di servizio. Se utilizzi il ruolo di servizio Amazon EMR predefinito e la policy gestita (EMR_DefaultRole e AmazonEMRServicePolicy_v2) per il cluster, le autorizzazioni per l'opzione della strategia di allocazione sono già incluse. Se non si utilizza il ruolo di servizio Amazon EMR e la policy gestita predefiniti, è necessario aggiungerli per utilizzare questa opzione. Per informazioni, consulta Ruolo di servizio per Amazon EMR (ruolo EMR).

Per ulteriori informazioni sulle istanze Spot, consulta le istanze Spot nella Guida per l'utente di Amazon EC2. Per ulteriori informazioni sulle istanze On-Demand, consulta On-Demand Instances nella Amazon EC2 User Guide.

Se si sceglie di avviare parchi istanze on demand con la strategia di allocazione del prezzo più basso, è possibile utilizzare le prenotazioni di capacità. Le opzioni di prenotazione della capacità possono essere impostate utilizzando l'API RunJobFlow di Amazon EMR. Le prenotazioni della capacità richiedono autorizzazioni aggiuntive per il ruolo di servizio che è necessario aggiungere per utilizzare queste opzioni. Per informazioni, consulta Autorizzazioni della strategia di allocazione. Tieni presente che non è possibile personalizzare le prenotazioni di capacità nella nuova console.

Opzioni di sottorete (zone di disponibilità) multiple

Quando utilizzi parchi istanze, puoi specificare più sottoreti Amazon EC2 all'interno di un VPC ciascuna corrispondente a una zona di disponibilità diversa. Se utilizzi EC2-Classic, specifica le zone di disponibilità in modo esplicito. Amazon EMR identifica la migliore zona di disponibilità per avviare istanze in base alle specifiche del parco istanze. Il provisioning delle istanze viene sempre effettuato in una sola zona di disponibilità. Puoi selezionare sottoreti private o pubbliche, ma non puoi combinare i due tipi. Inoltre, le sottoreti che specifichi devono trovarsi all'interno dello stesso VPC.

Configurazione del nodo master

Poiché il parco istanze primarie è solo un'istanza singola, la sua configurazione è leggermente diversa dai parchi istanze core e attività. Per il parco istanze primarie, puoi selezionare solo on demand o spot perché è costituito da una sola istanza. Se utilizzi la console per creare il parco istanze, la capacità target per l'opzione di acquisto selezionata è impostata su 1. Se utilizzi il AWS CLI, imposta sempre uno TargetSpotCapacity o TargetOnDemandCapacity 1 a seconda dei casi. È comunque possibile scegliere fino a 5 tipi di istanza per il parco istanze primarie (o un massimo di 30 quando si utilizza l'opzione di allocazione delle istanze on demand o spot). Tuttavia, a differenza del parco istanze core e attività, in cui Amazon EMR può effettuare il provisioning di più istanze di diversi tipi, Amazon EMR seleziona un singolo tipo di istanza per effettuare il provisioning per il parco istanze primarie.

Strategia di allocazione per parchi istanze

Con Amazon EMR versione 5.12.1 e successive, puoi utilizzare la strategia di allocazione con istanze on demand e Spot per ogni nodo del cluster. Quando crei un cluster utilizzando la AWS CLI, l'API Amazon EMR o la console Amazon EMR con una strategia di allocazione, puoi specificare fino a 30 tipi di istanze Amazon EC2 per parco istanze. Con la configurazione predefinita del parco istanze del cluster Amazon EMR, puoi avere fino a 5 tipi di istanze per parco istanze. Si consiglia di utilizzare la strategia di allocazione per un provisioning dei cluster più rapido, un'allocazione più accurata delle istanze Spot e un minor numero di interruzioni delle istanze Spot.

Strategia di allocazione con istanze On-Demand

Quando utilizzi la strategia di allocazione, le tue istanze On Demand utilizzano la strategia del prezzo più basso. In questo modo vengono avviate per prime le istanze con il prezzo più basso. Quando avvii istanze On-Demand, puoi utilizzare prenotazioni di capacità aperte o mirate nei tuoi account. È possibile utilizzare prenotazioni di capacità aperte per nodi primari, core e attività. Quando utilizzi istanze On-Demand con la strategia di allocazione per i parchi istanze, è possibile che si verifichi una condizione di capacità insufficiente. Si consiglia di specificare un numero maggiore di tipi di istanza per diversificare e ridurre la possibilità che si verifichi una condizione di capacità insufficiente. Per ulteriori informazioni, consulta Utilizzo di prenotazioni della capacità con parchi istanze.

Strategia di allocazione con istanze Spot

Per Istanze Spot puoi scegliere una delle seguenti strategie di allocazione:

price-capacity-optimized (consigliato)

La strategia di allocazione ottimizzata per prezzo e capacità avvia le istanze Spot dai pool di istanze Spot che hanno la capacità più elevata disponibile e il prezzo più basso per il numero di istanze in fase di avvio. Di conseguenza, la strategia ottimizzata per prezzo e capacità ha in genere maggiori possibilità di ottenere capacità Spot e offre tassi di interruzione inferiori.

capacity-optimized

La strategia di allocazione ottimizzata per capacità avvia le istanze Spot nei pool più disponibili con le minori possibilità di interruzione nel breve termine. Questa è una buona opzione per i carichi di lavoro che potrebbero avere un costo di interruzione più elevato associato al riavvio del lavoro. Questa è la strategia predefinita per Amazon EMR rilasci 6.9.0 e precedenti.

diversified

Con la strategia di allocazione diversificata, Amazon EC2 distribuisce le istanze Spot in tutti i pool di capacità Spot.

lowest-price

La strategia di allocazione del prezzo più basso avvia le istanze Spot dal pool con il prezzo più basso con capacità disponibile. Se il pool con il prezzo più basso non ha capacità disponibile, le istanze Spot provengono dal successivo pool con il prezzo più basso che ha capacità disponibile. Se un pool esaurisce la capacità prima di soddisfare la capacità desiderata, Amazon EC2 Fleet continua a soddisfare la richiesta attingendo dal successivo pool con il prezzo più basso. Per accertarti che la capacità desiderata sia soddisfatta, potresti ricevere istanze spot da vari pool. Poiché questa strategia considera solo il prezzo dell'istanza e non la capacità disponibile, potrebbe comportare tassi di interruzione elevati.

Autorizzazioni della strategia di allocazione

L'opzione della strategia di allocazione richiede diverse autorizzazioni IAM incluse automaticamente nel ruolo di servizio Amazon EMR predefinito e nella policy gestita da Amazon EMR (EMR_DefaultRole e AmazonEMRServicePolicy_v2). Se si utilizza un ruolo di servizio o una policy gestita personalizzati per il cluster, è necessario aggiungere queste autorizzazioni prima di creare il cluster. Per ulteriori informazioni, consulta Autorizzazioni della strategia di allocazione.

Quando si utilizza la strategia di allocazione on demand, sono disponibili delle prenotazioni della capacità on demand (ODCR). Le opzioni di prenotazione della capacità ti consentono di specificare una preferenza per utilizzare prima la capacità riservata per i cluster Amazon EMR. È possibile utilizzarla per garantire che i carichi di lavoro critici utilizzino la capacità già riservata utilizzando ODCR aperti o mirati. Per i carichi di lavoro non critici, le preferenze di prenotazione della capacità consentono di specificare se utilizzare la capacità riservata.

Le prenotazioni della capacità possono essere utilizzate solo da istanze che dispongono di attributi corrispondenti (tipo di istanza, piattaforma e zona di disponibilità). Per impostazione predefinita, le prenotazioni di capacità aperta vengono automaticamente utilizzate da Amazon EMR durante il provisioning di istanze on demand che corrispondono agli attributi dell'istanza. Se non disponi di istanze in esecuzione che corrispondono agli attributi delle prenotazioni di capacità, queste rimangono inutilizzate finché non avvii un'istanza con attributi corrispondenti. Se non si desidera utilizzare alcuna prenotazione di capacità durante l'avvio del cluster, è necessario impostare la preferenza di prenotazione di capacità su none (nessuna) nelle opzioni di avvio.

Tuttavia, puoi anche utilizzare una prenotazione di capacità per carichi di lavoro specifici. In questo modo puoi controllare in modo esplicito quali istanze possono essere eseguite in quella capacità riservata. Per ulteriori informazioni sulle prenotazioni di capacità On-Demand, consulta Utilizzo di prenotazioni della capacità con parchi istanze.

Autorizzazioni IAM necessarie per una strategia di allocazione

Il Ruolo di servizio per Amazon EMR (ruolo EMR) richiede autorizzazioni aggiuntive per creare un cluster che utilizzi la strategia di allocazione per parchi istanze on demand o Spot.

Queste autorizzazioni sono incluse automaticamente nel ruolo di servizio Amazon EMR EMR_DefaultRole e nella policy gestita da Amazon EMR AmazonEMRServicePolicy_v2.

Se utilizzi un ruolo di servizio o una policy gestita personalizzati per il cluster, devi aggiungere le autorizzazioni seguenti:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DeleteLaunchTemplate", "ec2:CreateLaunchTemplate", "ec2:DescribeLaunchTemplates", "ec2:CreateLaunchTemplateVersion", "ec2:CreateFleet" ], "Resource": "*" } }

Di seguito sono riportate le autorizzazioni del ruolo di servizio necessarie per creare un cluster che utilizza prenotazioni di capacità aperte o mirate. È necessario includere queste autorizzazioni oltre alle autorizzazioni necessarie per l'utilizzo della strategia di allocazione.

Esempio Documento della policy per le prenotazioni di capacità del ruolo di servizio

Per utilizzare le prenotazioni di capacità aperte, è necessario includere le seguenti autorizzazioni aggiuntive.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeCapacityReservations", "ec2:DescribeLaunchTemplateVersions", "ec2:DeleteLaunchTemplateVersions" ], "Resource": "*" } ] }

Per utilizzare le prenotazioni di capacità mirate, è necessario includere le seguenti autorizzazioni aggiuntive.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeCapacityReservations", "ec2:DescribeLaunchTemplateVersions", "ec2:DeleteLaunchTemplateVersions", "resource-groups:ListGroupResources" ], "Resource": "*" } ] }

Configurazione di parchi istanze per il cluster

Nota

Abbiamo riprogettato la console Amazon EMR per facilitarne l'utilizzo. Per scoprire le differenze tra la vecchia e la nuova esperienza sulla console, consulta la sezione Console Amazon EMR.

New console
Creazione di un cluster con parchi istanze con la nuova console
  1. Accedi a e apri AWS Management Console la console Amazon EMR all'indirizzo https://console.aws.amazon.com/emr.

  2. In EMR on EC2 (EMR su EC2), nel riquadro di navigazione a sinistra, scegli Clusters (Cluster), quindi seleziona Create cluster (Crea cluster).

  3. In Cluster configuration (Configurazione del cluster), scegli Instance fleets (Parchi istanze).

  4. Per ogni Node group (Gruppo di nodi), seleziona Add instance type (Aggiungi tipo di istanza) e scegli fino a 5 tipi di istanze per i parchi istanze primarie e core e fino a 15 tipi di istanze per i parchi istanze attività. Amazon EMR può effettuare il provisioning di qualsiasi combinazione di questi tipi di istanze quando avvia il cluster.

  5. In ogni tipo di gruppo di nodi, scegli il menu a discesa Actions (Operazioni) accanto a ciascuna istanza per modificare queste impostazioni:

    Aggiunta di volumi EBS

    Specifica i volumi EBS da collegare al tipo di istanza dopo che Amazon EMR ne effettua il provisioning.

    Modifica della capacità ponderata

    Per il gruppo di nodi core, modifica questo valore con un numero qualsiasi di unità adatto alle tue applicazioni. Il numero di vCore YARN per ogni tipo di istanza del parco istanze viene utilizzato come relativa capacità ponderata predefinita. Non è possibile modificare la capacità ponderata del nodo primario.

    Modifica del prezzo spot massimo

    Per ogni tipo di istanza all'interno di un parco, specifica un prezzo spot massimo. Puoi impostare questo prezzo come una percentuale del prezzo on demand o come un importo in dollari specifico. Se il prezzo spot corrente in una zona di disponibilità è inferiore al prezzo spot massimo, Amazon EMR effettua il provisioning delle istanze spot. L'utente paga il prezzo Spot, non necessariamente il prezzo Spot massimo.

  6. Facoltativamente, per aggiungere gruppi di sicurezza per i tuoi nodi, espandi EC2 security groups (firewall) (Gruppi di sicurezza EC2 ([firewall]) nella sezione Networking (Reti) e seleziona il gruppo di sicurezza per ogni tipo di nodo.

  7. Facoltativamente, seleziona la casella di controllo accanto a Applica strategia di allocazione se desideri utilizzare tale opzione e seleziona la strategia di allocazione che desideri specificare per le istanze Spot. Se il tuo ruolo di servizio Amazon EMR non dispone delle autorizzazioni richieste, è consigliabile non selezionare questa opzione. Per ulteriori informazioni, consulta Strategia di allocazione per parchi istanze.

  8. Scegli qualsiasi altra opzione applicabile al cluster.

  9. Per avviare il cluster, scegli Create cluster (Crea cluster).

Old console
Creazione di un cluster con parchi istanze con la vecchia console
  1. Passa alla nuova console Amazon EMR e seleziona Passa alla vecchia console dalla barra di navigazione laterale. Per ulteriori informazioni su cosa aspettarti quando passi alla vecchia console, consulta Utilizzo della vecchia console.

  2. Scegli Create cluster (Crea cluster).

  3. Nella parte superiore della finestra della console, scegli Go to advanced options (Vai alle opzioni avanzate), immetti le opzioni Software Configuration (Configurazione software) e seleziona Next (Successivo).

  4. In Cluster Composition (Composizione cluster), scegli Instance fleets (Parchi istanze). Quando selezioni l'opzione parco istanze, dovresti visualizzare le opzioni per specificare la Target capacity (Capacità di destinazione) di istanze on demand e Spot nella tabella Cluster Nodes and Instances (Nodi cluster e istanze).

  5. Per Network (Rete), immetti un valore. Se scegli un VPC per Network (Rete), seleziona una EC2 Subnet (Sottorete EC2) singola o fai CTRL+clic per scegliere più sottoreti Amazon EC2. Le sottoreti selezionate devono essere dello stesso tipo (pubblica o privata). Se si sceglie solo una sottorete, il cluster viene avviato in tale sottorete. Se si sceglie un gruppo di sottoreti, la sottorete più adatta viene selezionata dal gruppo all'avvio del cluster.

    Nota

    L'account e la Regione offrono la possibilità di scegliere Launch into EC2-Classic (Avvio in EC2-Classic) per Network (Rete). Se scegli questa opzione, effettua una o più selezioni da EC2 Availability Zones (Zone di disponibilità EC2) anziché da EC2 Subnets (Sottoreti EC2). Per ulteriori informazioni, consulta Amazon EC2 e Amazon VPC nella Amazon EC2 User Guide.

  6. In Allocation strategy (Strategia di allocazione), seleziona la casella di controllo per applicare le strategie di allocazione se desideri utilizzare tale opzione. Per ulteriori informazioni, consulta Strategia di allocazione per parchi istanze.

  7. Per ciascun Node type (Tipo di nodo), se desideri modificare il nome predefinito di un parco istanze, scegli l'icona a forma di matita e immetti un nome descrittivo. Se desideri rimuovere il parco istanze Task (Attività), scegli l'icona X a destra della riga Task (Attività).

  8. Scegli Add/remove instance types to fleet (Aggiungi/rimuovi tipi di istanza al/dal parco istanze) e scegli fino a 5 tipi di istanze dall'elenco di parchi istanze primarie e core e fino a 15 tipi di istanze dall'elenco di parchi istanze attività. Amazon EMR può scegliere di effettuare il provisioning di qualsiasi combinazione di questi tipi di istanze quando avvia il cluster.

  9. Per ogni tipo di istanza principale e attività, scegli come definire la capacità ponderata (ogni istanza conta come X unità) per quell'istanza. Il numero di vCore YARN per ogni tipo di istanza del parco istanze viene utilizzato come unità di capacità ponderata predefinita, ma è possibile modificare il valore in qualsiasi unità utile per le applicazioni.

  10. In Target capacity (Capacità di destinazione), definisci il numero totale di istanze on demand e Spot che desideri per ogni parco istanze. EMR assicura che le istanze del parco istanze soddisfino le unità richieste per la capacità target on demand e Spot. Se per un parco istanze non sono specificate unità on demand o Spot, non viene fornita alcuna capacità per tale parco istanze.

  11. Se un parco istanze è configurato con una capacità target per Spot, è possibile inserire il prezzo Spot massimo come % of On-Demand (% del prezzo on demand) o immettere una quantità Dollars ($) (Dollari ($)) in USD.

  12. Per avere volumi EBS collegati al tipo di istanza quando viene effettuato il provisioning, seleziona la matita accanto a EBS Storage (Archiviazione EBS), quindi immetti le opzioni di configurazione EBS.

  13. Se hai definito un conteggio istantaneo per Spot units (Unità Spot), scegli Advanced Spot options (Opzioni Spot avanzate) in base alle seguenti linee guida:

    • Provisioning timeout (Timeout di provisioning): utilizza queste impostazioni per controllare il comportamento di Amazon EMR quando non è in grado di effettuare il provisioning di istanze Spot tra i Fleet instance types (Tipi di istanze del parco istanze) specificati. Inserisci un periodo di timeout in minuti, quindi scegli tra le opzioni Terminate the cluster (Termina il cluster) o Switch to provisioning On-Demand Instances (Passa al provisioning di istanze on demand). Se scegli di passare al provisioning di istanze on demand, la capacità assegnata delle istanze on demand esegue il conteggio per il raggiungimento della capacità target per istanze Spot e Amazon EMR effettua il provisioning di istanze on demand finché non viene raggiunta la capacità target per istanze Spot.

  14. Scegli Next (Successivo), modifica altre impostazioni cluster, quindi scegli Next (Successivo).

  15. Se hai scelto di applicare la nuova strategia di allocazione, nelle impostazioni Security Options (Opzioni di sicurezza), seleziona un EMR role (Ruolo EMR) e un EC2 instance profile (Profilo dell'istanza EC2) che contengano le autorizzazioni necessarie per la strategia di allocazione. In caso contrario, la creazione del cluster avrà esito negativo.

  16. Scegli Crea cluster.

AWS CLI

Per creare e avviare un cluster con flotte di istanze con AWS CLI, segui queste linee guida:

  • Per creare e avviare un cluster con parchi istanze, utilizza il comando create-cluster insieme ai parametri --instance-fleet.

  • Per ottenere i dettagli sulla configurazione dei parchi istanze in un cluster, utilizza il comando list-instance-fleets.

  • Per aggiungere AMI Amazon Linux personalizzate multiple a un cluster che stai creando, usa l'opzione CustomAmiId con ogni specifica InstanceType. È possibile configurare i nodi della flotta di istanze con più tipi di istanza e più AMI personalizzate in base alle proprie esigenze. Per informazioni, consulta Esempi: creazione di un cluster con la configurazione di parchi istanze.

  • Per apportare modifiche alla capacità target per un parco istanze, utilizza il comando modify-instance-fleet.

  • Per aggiungere un parco istanze dell'attività a un cluster che non ne possiede già uno, utilizza il comando add-instance-fleet.

  • È possibile aggiungere più AMI personalizzate al parco di istanze di attività utilizzando l'CustomAmiId argomento con il add-instance-fleet comando. Per informazioni, consulta Esempi: creazione di un cluster con la configurazione di parchi istanze.

  • Per utilizzare l'opzione di strategia di allocazione durante la creazione di un parco istanze, aggiornare il ruolo del servizio per includere il documento del policy di esempio nella sezione seguente.

  • Per utilizzare le opzioni di riserva di capacità durante la creazione di un parco istanze con strategia di allocazione On-Demand, aggiornare il ruolo del servizio per includere il documento del policy di esempio nella sezione seguente.

  • I parchi istanze vengono inclusi automaticamente nel ruolo di servizio EMR e nella policy gestita da Amazon EMR predefiniti (EMR_DefaultRole e AmazonEMRServicePolicy_v2). Se si utilizza un ruolo di servizio personalizzato o una policy gestita personalizzata per il cluster, è necessario aggiungere le nuove autorizzazioni per la strategia di allocazione nella sezione seguente.

Esempi: creazione di un cluster con la configurazione di parchi istanze

Negli esempi seguenti vengono illustrati i comandi create-cluster con opzioni diverse che è possibile combinare.

Nota

Se in precedenza non sono stati creati il ruolo del servizio Amazon EMR predefinito e il profilo dell'istanza EC2, digitare aws emr create-default-roles per crearli prima di utilizzare il comando create-cluster.

Esempio: primaria on demand, core on demand con tipo di istanza singola, VPC predefinito
aws emr create-cluster --release-label emr-5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge}']
Esempio: primaria spot, core spot con tipo di istanza singola, VPC predefinito
aws emr create-cluster --release-label emr-5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets \ InstanceFleetType=MASTER,TargetSpotCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5}'] \ InstanceFleetType=CORE,TargetSpotCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5}']
Esempio: primaria on demand, core mista con tipo di istanza singola, sottorete EC2 singola
aws emr create-cluster --release-label emr-5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,SubnetIds=['subnet-ab12345c'] \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=2,TargetSpotCapacity=6,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5,WeightedCapacity=2}']
Esempio: primaria on demand, core spot con più tipi di istanze ponderate, durata definita e timeout per spot, intervallo di sottoreti EC2
aws emr create-cluster --release-label emr-5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,SubnetIds=['subnet-ab12345c','subnet-de67890f'] \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge}'] \ InstanceFleetType=CORE,TargetSpotCapacity=11,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5,WeightedCapacity=3}',\ '{InstanceType=m4.2xlarge,BidPrice=0.9,WeightedCapacity=5}'],\ LaunchSpecifications={SpotSpecification='{TimeoutDurationMinutes=120,TimeoutAction=SWITCH_TO_ON_DEMAND}'}
Esempio: primaria on demand, core mista e attività con più tipi di istanze ponderate, timeout per istanze spot core, intervallo di sottoreti EC2
aws emr create-cluster --release-label emr-5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,SubnetIds=['subnet-ab12345c','subnet-de67890f'] \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=8,TargetSpotCapacity=6,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5,WeightedCapacity=3}',\ '{InstanceType=m4.2xlarge,BidPrice=0.9,WeightedCapacity=5}'],\ LaunchSpecifications={SpotSpecification='{TimeoutDurationMinutes=120,TimeoutAction=SWITCH_TO_ON_DEMAND}'} \ InstanceFleetType=TASK,TargetOnDemandCapacity=3,TargetSpotCapacity=3,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5,WeightedCapacity=3}']
Esempio: primaria spot, nessuna core o attività, configurazione Amazon EBS, VPC predefinito
aws emr create-cluster --release-label Amazon EMR 5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets \ InstanceFleetType=MASTER,TargetSpotCapacity=1,\ LaunchSpecifications={SpotSpecification='{TimeoutDurationMinutes=60,TimeoutAction=TERMINATE_CLUSTER}'},\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5,\ EbsConfiguration={EbsOptimized=true,EbsBlockDeviceConfigs=[{VolumeSpecification={VolumeType=gp2,\ SizeIn GB=100}},{VolumeSpecification={VolumeType=io1,SizeInGB=100,Iop s=100},VolumesPerInstance=4}]}}']
Esempio: AMI personalizzate multiple, tipi di istanza multipli, primario on-demand, principale on-demand
aws emr create-cluster --release-label Amazon EMR 5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-123456},{InstanceType=m6g.xlarge, CustomAmiId=ami-234567}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-123456},{InstanceType=m6g.xlarge, CustomAmiId=ami-234567}']
Esempio: aggiunta di un nodo attività a un cluster in esecuzione con più tipi di istanza e più AMI personalizzate
aws emr add-instance-fleet --cluster-id j-123456 --release-label Amazon EMR 5.3.1 \ --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleet \ InstanceFleetType=Task,TargetSpotCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-123456}',\ '{InstanceType=m6g.xlarge,CustomAmiId=ami-234567}']
Esempio: utilizzo di un file di configurazione JSON

Puoi configurare i parametri del parco istanze in un file JSON, quindi fare riferimento al file JSON come l'unico parametro per i parchi istanze. Ad esempio, il comando seguente fa riferimento a un file di configurazione JSON, my-fleet-config.json:

aws emr create-cluster --release-label emr-5.30.0 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets file://my-fleet-config.json

Il my-fleet-configfile.json specifica le flotte di istanze primarie, principali e task, come illustrato nell'esempio seguente. Il parco istanze core utilizza un prezzo Spot massimo (BidPrice) come percentuale di On-Demand, mentre i parchi di istanze task e primarie utilizzano un prezzo Spot massimo (BidPriceAsPercentageofOnDemandPrice) come stringa in USD.

[ { "Name": "Masterfleet", "InstanceFleetType": "MASTER", "TargetSpotCapacity": 1, "LaunchSpecifications": { "SpotSpecification": { "TimeoutDurationMinutes": 120, "TimeoutAction": "SWITCH_TO_ON_DEMAND" } }, "InstanceTypeConfigs": [ { "InstanceType": "m5.xlarge", "BidPrice": "0.89" } ] }, { "Name": "Corefleet", "InstanceFleetType": "CORE", "TargetSpotCapacity": 1, "TargetOnDemandCapacity": 1, "LaunchSpecifications": { "OnDemandSpecification": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "UsageStrategy": "use-capacity-reservations-first", "CapacityReservationResourceGroupArn": "String" } }, "SpotSpecification": { "AllocationStrategy": "capacity-optimized", "TimeoutDurationMinutes": 120, "TimeoutAction": "TERMINATE_CLUSTER" } }, "InstanceTypeConfigs": [ { "InstanceType": "m5.xlarge", "BidPriceAsPercentageOfOnDemandPrice": 100 } ] }, { "Name": "Taskfleet", "InstanceFleetType": "TASK", "TargetSpotCapacity": 1, "LaunchSpecifications": { "OnDemandSpecification": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "CapacityReservationPreference": "none" } }, "SpotSpecification": { "TimeoutDurationMinutes": 120, "TimeoutAction": "TERMINATE_CLUSTER" } }, "InstanceTypeConfigs": [ { "InstanceType": "m5.xlarge", "BidPrice": "0.89" } ] } ]

Modifica delle capacità target per un parco istanze

Per specificare nuove capacità target per un parco istanze, utilizza il comando modify-instance-fleet. Devi specificare l'ID cluster e l'ID del parco istanze. Utilizza il comando list-instance-fleets per recuperare ID del parco istanze.

aws emr modify-instance-fleet --cluster-id <cluster-id> \ --instance-fleet \ InstanceFleetId='<instance-fleet-id>',TargetOnDemandCapacity=1,TargetSpotCapacity=1

Aggiunta di un parco istanze attività a un cluster

Se un cluster contiene solo parchi istanze primarie e core, puoi utilizzare il comando add-instance-fleet per aggiungere un parco istanze attività. Puoi utilizzare questo comando solo per aggiungere parchi istanze dell'attività.

aws emr add-instance-fleet --cluster-id <cluster-id> --instance-fleet \ InstanceFleetType=TASK,TargetSpotCapacity=1,\ LaunchSpecifications={SpotSpecification='{TimeoutDurationMinutes=20,TimeoutAction=TERMINATE_CLUSTER}'},\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5}']

Ottenimento dei dettagli di configurazione per parchi istanze in un cluster

Per ottenere i dettagli di configurazione dei parchi istanze in un cluster, utilizza il comando list-instance-fleets. Il comando richiede un ID cluster come input. Nell'esempio seguente viene illustrato il comando e il relativo output per un cluster che contiene un gruppo di istanze attività primarie e un gruppo di istanze attività core. Per la sintassi di risposta completa, ListInstanceFleetsconsulta Amazon EMR API Reference.

list-instance-fleets --cluster-id <cluster-id>
{ "InstanceFleets": [ { "Status": { "Timeline": { "ReadyDateTime": 1488759094.637, "CreationDateTime": 1488758719.817 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "ProvisionedSpotCapacity": 6, "Name": "CORE", "InstanceFleetType": "CORE", "LaunchSpecifications": { "SpotSpecification": { "TimeoutDurationMinutes": 60, "TimeoutAction": "TERMINATE_CLUSTER" } }, "ProvisionedOnDemandCapacity": 2, "InstanceTypeSpecifications": [ { "BidPrice": "0.5", "InstanceType": "m5.xlarge", "WeightedCapacity": 2 } ], "Id": "if-1ABC2DEFGHIJ3" }, { "Status": { "Timeline": { "ReadyDateTime": 1488759058.598, "CreationDateTime": 1488758719.811 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "ProvisionedSpotCapacity": 0, "Name": "MASTER", "InstanceFleetType": "MASTER", "ProvisionedOnDemandCapacity": 1, "InstanceTypeSpecifications": [ { "BidPriceAsPercentageOfOnDemandPrice": 100.0, "InstanceType": "m5.xlarge", "WeightedCapacity": 1 } ], "Id": "if-2ABC4DEFGHIJ4" } ] }