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à.
Utilizzo di un'AMI personalizzata per fornire maggiore flessibilità per la configurazione del cluster Amazon EMR
Se utilizzi Amazon EMR 5.7.0 o versioni successive, puoi scegliere di specificare un'AMI Amazon Linux personalizzata anziché l'AMI Amazon Linux predefinita per Amazon EMR. Un'AMI personalizzata è utile se desideri effettuare le seguenti operazioni:
-
Preinstallazione delle applicazioni ed esecuzione di altre personalizzazioni invece di utilizzare operazioni di bootstrap. In questo modo è possibile migliorare il tempo di avvio del cluster e semplificare il flusso di lavoro di startup. Per ulteriori informazioni e un esempio, consulta Creazione di un'AMI Amazon Linux personalizzata da un'istanza preconfigurata.
-
Implementazione di configurazioni per cluster e nodo più sofisticate di quelle consentite dalle operazioni di bootstrap.
-
Esegui la crittografia dei volumi del dispositivo root EBS (volumi di avvio) di EC2 istanze nel cluster se utilizzi una versione di Amazon EMR precedente a 5.24.0. Come per l'AMI predefinita, la dimensione minima del volume root per un'AMI personalizzata è 10 GiB per Amazon EMR rilascio 6.9 e precedenti e 15 GiB per Amazon EMR rilascio 6.10 e successivi. Per ulteriori informazioni, consulta Creazione di un'AMI personalizzata con un volume del dispositivo di root Amazon EBS crittografato.
Nota
A partire da Amazon EMR versione 5.24.0, puoi utilizzare un'opzione di configurazione di sicurezza per crittografare il dispositivo di root EBS e i volumi di archiviazione quando specifichi come provider di chiavi AWS KMS Per ulteriori informazioni, consulta Crittografia del disco locale.
Un'AMI personalizzata deve trovarsi nella stessa AWS Regione in cui viene creato il cluster. Dovrebbe anche corrispondere all'architettura dell' EC2 istanza. Ad esempio, un'istanza m5.xlarge ha un'architettura x86_64. Pertanto, per effettuare il provisioning di un m5.xlarge utilizzando un'AMI personalizzata, anche l'AMI personalizzata dovrebbe avere un'architettura x86_64. Allo stesso modo, per eseguire il provisioning di un'istanza m6g.xlarge, con architettura arm64, l'AMI personalizzata dovrebbe avere l'architettura arm64. Per ulteriori informazioni sull'identificazione di un'AMI Linux per il tipo di istanza, consulta Trovare un'AMI Linux nella Guida per EC2 l'utente di Amazon.
Importante
I cluster EMR che eseguono Amazon Linux o Amazon Linux 2 utilizzano il comportamento predefinito di Amazon Linux e non scaricano e installano automaticamente aggiornamenti importanti e critici dei kernel che richiedono un riavvio. AMIs Si tratta dello stesso comportamento assunto da altre EC2 istanze Amazon Linux che eseguono l'AMI predefinita di Amazon Linux. Se nuovi aggiornamenti software Amazon Linux che richiedono un riavvio (ad esempio, aggiornamenti del kernel, NVIDIA e CUDA) risultano disponibili dopo il rilascio di una versione di Amazon EMR, le istanze del cluster EMR che eseguono l'AMI predefinita non scaricano e installano automaticamente tali aggiornamenti. Per ottenere gli aggiornamenti del kernel, puoi personalizzare l'AMI di Amazon EMR per utilizzare l'AMI di Amazon Linux più recente.
Creazione di un'AMI Amazon Linux personalizzata da un'istanza preconfigurata
Di seguito è riportata la procedura di base per la preinstallazione di software e l'esecuzione di altre configurazioni per creare un'AMI Amazon Linux personalizzata per Amazon EMR:
-
Avvia un'istanza dall'AMI Amazon Linux di base.
-
Connessione all'istanza per l'installazione di software e l'esecuzione di altre personalizzazioni.
-
Creazione di una nuova immagine (snapshot AMI) dell'istanza configurata.
Una volta creata l'immagine in base alla tua istanza personalizzata, puoi copiare tale immagine in una destinazione crittografata, come descritto in Creazione di un'AMI personalizzata con un volume del dispositivo di root Amazon EBS crittografato.
Tutorial: creazione di un'AMI da un'istanza con software personalizzato installato
Per avviare un' EC2 istanza basata sull'AMI Amazon Linux più recente
-
Utilizzate il AWS CLI per eseguire il comando seguente, che crea un'istanza da un'AMI esistente. Sostituisci
con la key pair che usi per connetterti all'istanza eMyKeyName
MyAmiId
con l'ID di un'AMI Amazon Linux appropriata. Per l'AMI più recente IDs, consulta AMI Amazon Linux. Nota
I caratteri di continuazione della riga Linux (\) sono inclusi per questioni di leggibilità. Possono essere rimossi o utilizzati nei comandi Linux. Per Windows, rimuoverli o sostituirli con un accento circonflesso (^).
aws ec2 run-instances --image-id
MyAmiID
\ --count 1 --instance-typem5.xlarge
\ --key-nameMyKeyName
--regionus-west-2
Il valore di output
InstanceId
viene usato come
nella fase successiva.MyInstanceId
-
Esegui il comando seguente:
aws ec2 describe-instances --instance-ids
MyInstanceId
Il valore di output
PublicDnsName
viene usato per connettersi all'istanza nella fase successiva.
Per connettersi all'istanza e installare il software
-
Utilizza una connessione SSH che consente di eseguire comandi shell sull'istanza di Linux. Per ulteriori informazioni, consulta Connessione alla tua istanza Linux tramite SSH nella Amazon EC2 User Guide.
-
Esegui eventuali personalizzazioni necessarie. Ad esempio:
sudo yum install
MySoftwarePackage
sudo pip installMySoftwarePackage
Per creare una snapshot dall'immagine personalizzata
-
Dopo aver personalizzato l'istanza, utilizzare il comando
create-image
per creare un'AMI dall'istanza.aws ec2 create-image --no-dry-run --instance-id
MyInstanceId
--nameMyEmrCustomAmi
Il valore di output
imageID
viene utilizzato all'avvio del cluster o alla creazione di una snapshot crittografata. Per ulteriori informazioni, consultare Utilizzare un'AMI personalizzata singola in un cluster EMR e Creazione di un'AMI personalizzata con un volume del dispositivo di root Amazon EBS crittografato.
Come utilizzare un'AMI personalizzata in un cluster Amazon EMR
Puoi utilizzare un'AMI personalizzata per eseguire il provisioning di un cluster Amazon EMR in due modi:
-
Utilizza un'AMI personalizzata per tutte le EC2 istanze nel cluster.
-
Usa una personalizzazione diversa AMIs per i diversi tipi di EC2 istanza utilizzati nel cluster.
È possibile utilizzare solo una delle due opzioni durante il provisioning di un cluster EMR e non è possibile modificarlo una volta avviato il cluster.
Considerazione | AMI personalizzata singola | Molteplici personalizzazioni AMIs |
---|---|---|
Utilizzare processori x86 e Graviton2 con personalizzazione AMIs nello stesso cluster |
|
|
La personalizzazione di AMI varia a seconda dei tipi di istanza |
|
|
Modifica la personalizzazione AMIs quando aggiungi una nuova istanza di attività. groups/fleets to a running cluster. Note: you cannot change the custom AMI of existing instance groups/fleets |
|
|
Utilizza AWS la console per avviare un cluster |
|
|
Utilizzare AWS CloudFormation per avviare un cluster |
|
|
Utilizzare un'AMI personalizzata singola in un cluster EMR
Per specificare un ID AMI personalizzato al momento della creazione di un cluster, utilizzare una delle seguenti opzioni:
-
AWS Management Console
-
AWS CLI
-
Amazon EMR SDK
-
API Amazon EMR RunJobFlow
-
AWS CloudFormation (vedi la
CustomAmiID
proprietà in Cluster InstanceGroupConfig, Cluster InstanceTypeConfig InstanceGroupConfig, Resource o Resource InstanceFleetConfig -) InstanceTypeConfig
Usa più opzioni personalizzate AMIs in un cluster Amazon EMR
Per creare un cluster utilizzando più opzioni personalizzate AMIs, utilizzare una delle seguenti:
-
AWS CLI versione 1.20.21 o successiva
-
AWS SDK
-
Amazon EMR RunJobFlownel riferimento dell'API Amazon EMR
-
AWS CloudFormation (vedi la
CustomAmiID
proprietà in Cluster InstanceGroupConfig, InstanceTypeConfigCluster, Resource o InstanceGroupConfig InstanceFleetConfigResource -) InstanceTypeConfig
La Console di AWS gestione non supporta la creazione di un cluster utilizzando più elementi personalizzati AMIs.
Esempio - Usa la AWS CLI per creare un cluster di gruppi di istanze utilizzando più gruppi personalizzati AMIs
Utilizzando la AWS CLI versione 1.20.21 o successive, è possibile assegnare una AMI personalizzata singola all'intero cluster oppure è possibile assegnare AMI personalizzate multiple AMIs a ogni nodo di istanza del cluster.
L'esempio seguente mostra un cluster di gruppi di istanze uniformi creato con due tipi di istanze (m5.xlarge) utilizzate tra i tipi di nodi (primario, principale, attività). Ogni nodo ha personalizzazioni multiple AMIs. L'esempio illustra diverse caratteristiche della configurazione AMI personalizzata multipla:
-
Non è stata assegnata alcuna AMI personalizzata a livello di cluster. Questo per evitare conflitti tra le AMI personalizzate multiple AMIs e una AMI personalizzata singola, il che causerebbe il fallimento del avvio del cluster.
-
Il cluster può avere nodi attività personalizzati multipli AMIs tra i nodi primari, i nodi principali e i nodi attività singoli. Ciò consente personalizzazioni AMI individuali, come applicazioni preinstallate, configurazioni cluster sofisticate e volumi di dispositivi root Amazon EBS crittografati.
-
Il nodo principale del gruppo di istanze può avere un solo tipo di istanza e una corrispondente AMI personalizzata. Analogamente, il nodo primario può avere un solo tipo di istanza e una corrispondente AMI personalizzata.
-
Il cluster può avere più nodi attività.
aws emr create-cluster --instance-groups InstanceGroupType=PRIMARY,InstanceType=
m5.xlarge
,InstanceCount=1
,CustomAmiId=ami-123456
InstanceGroupType=CORE,InstanceType=m5.xlarge
,InstanceCount=1
,CustomAmiId=ami-234567
InstanceGroupType=TASK,InstanceType=m6g.xlarge
,InstanceCount=1
,CustomAmiId=ami-345678
InstanceGroupType=TASK,InstanceType=m5.xlarge
,InstanceCount=1
,CustomAmiId=ami-456789
Esempio - Usa l' AWS CLI versione 1.20.21 o successive per aggiungere un nodo attività a un cluster di gruppi di istanze in esecuzione con più tipi di istanza e più istanze personalizzate AMIs
Utilizzando l' AWS CLI versione 1.20.21 o successive, è possibile aggiungere più istanze personalizzate AMIs a un gruppo di istanze aggiunto a un cluster in esecuzione. L'argomento CustomAmiId
può essere utilizzato con il comando add-instance-groups
come mostrato nell'esempio seguente. Si noti che lo stesso ID AMI personalizzate multiple (ami-123456) viene utilizzato in più di un nodo.
aws emr create-cluster --instance-groups InstanceGroupType=PRIMARY,InstanceType=m5.xlarge,InstanceCount=1,CustomAmiId=ami-123456 InstanceGroupType=CORE,InstanceType=m5.xlarge,InstanceCount=1,CustomAmiId=ami-123456 InstanceGroupType=TASK,InstanceType=m5.xlarge,InstanceCount=1,CustomAmiId=ami-234567 { "ClusterId": "j-123456", ... } aws emr add-instance-groups --cluster-id j-123456 --instance-groups InstanceGroupType=Task,InstanceType=m6g.xlarge,InstanceCount=1,CustomAmiId=ami-345678
Esempio - Usa la AWS CLI versione 1.20.21 o successive per creare un cluster di parchi istanze, nodi principali On-Demand, nodi principali On-Demand AMIs, nodi principali On-Demand, nodi core multipli e nodi attività multipli
aws emr create-cluster --instance-fleets InstanceFleetType=PRIMARY,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge, CustomAmiId=ami-123456}'] InstanceFleetType=CORE,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-234567},{InstanceType=m6g.xlarge, CustomAmiId=ami-345678}'] InstanceFleetType=TASK,TargetSpotCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-456789},{InstanceType=m6g.xlarge, CustomAmiId=ami-567890}']
Esempio - Usa l' AWS CLI versione 1.20.21 o successive per aggiungere nodi attività a un cluster in esecuzione con più tipi di istanza e più istanze personalizzate AMIs
aws emr create-cluster --instance-fleets InstanceFleetType=PRIMARY,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge, CustomAmiId=ami-123456}'] InstanceFleetType=CORE,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-234567},{InstanceType=m6g.xlarge, CustomAmiId=ami-345678}'] { "ClusterId": "j-123456", ... } aws emr add-instance-fleet --cluster-id j-123456 --instance-fleet InstanceFleetType=TASK,TargetSpotCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-234567},{InstanceType=m6g.xlarge, CustomAmiId=ami-345678}']
Gestione degli aggiornamenti per i repository di pacchetti AMI
Per impostazione predefinita, al primo avvio Amazon Linux si AMIs connette ai repository di pacchetti per installare gli aggiornamenti di sicurezza prima dell'avvio di altri servizi. A seconda dei requisiti, puoi scegliere di disabilitare gli aggiornamenti quando specifichi un'AMI personalizzata per Amazon EMR. L'opzione di disattivazione di questa funzione è disponibile solo con le AMI personalizzate. Per impostazione predefinita, il kernel di Amazon Linux e altri pacchetti software che richiedono un riavvio non vengono aggiornati. Tieni presente che la tua configurazione di rete deve consentire l'uscita HTTP e HTTPS ai repository Amazon Linux in Amazon S3, altrimenti gli aggiornamenti della sicurezza non avranno esito positivo.
avvertimento
Specificando un'AMI personalizzata, consigliamo vivamente di scegliere di aggiornare tutti i pacchetti installati al riavvio. La scelta di non aggiornare pacchetti crea maggiori rischi per la sicurezza.
Con la AWS Management Console, puoi selezionare l'opzione per disabilitare gli aggiornamenti al momento della scelta di una Custom AMI (AMI personalizzata).
Con AWS CLI, è possibile specificare --repo-upgrade-on-boot NONE
insieme a --custom-ami-id
quando si utilizza il create-cluster comando.
Con l'API Amazon EMR, puoi specificare NONE
il RepoUpgradeOnBootparametro.
Creazione di un'AMI personalizzata con un volume del dispositivo di root Amazon EBS crittografato
Per crittografare il volume del dispositivo di root Amazon EBS di un'AMI Amazon Linux per Amazon EMR, copia un'immagine snapshot da un'AMI non crittografata a una destinazione crittografata. Per informazioni sulla creazione di volumi EBS crittografati, consulta Amazon EBS encryption nella Amazon EC2 User Guide. L'AMI di origine per lo snapshot può essere l'AMI Amazon Linux di base; in alternativa, poi copiare uno snapshot da un'AMI ottenuta da un'AMI Amazon Linux di base personalizzata.
Nota
A partire da Amazon EMR versione 5.24.0, puoi utilizzare un'opzione di configurazione di sicurezza per crittografare il dispositivo di root EBS e i volumi di archiviazione quando specifichi come provider di chiavi AWS KMS Per ulteriori informazioni, consulta Crittografia del disco locale.
È possibile utilizzare un fornitore di chiavi esterno o una chiave AWS KMS per crittografare il volume root EBS. Affinché Amazon EMR possa creare un cluster utilizzando l'AMI, il ruolo di servizio utilizzato da Amazon EMR (in genere il ruolo EMR_DefaultRole
predefinito) deve essere autorizzato a crittografare e decrittare il volume. Quando si utilizza AWS KMS come fornitore di chiavi, ciò significa che devono essere consentite le seguenti azioni:
-
kms:encrypt
-
kms:decrypt
-
kms:ReEncrypt*
-
kms:CreateGrant
-
kms:GenerateDataKeyWithoutPlaintext"
-
kms:DescribeKey"
Il modo più semplice per farlo consiste nell'aggiungere il ruolo come utente chiave, come descritto nel seguente tutorial. L'esempio seguente di istruzione per policy viene fornito qualora fosse necessario personalizzare le policy di ruolo.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EmrDiskEncryptionPolicy", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:CreateGrant", "kms:GenerateDataKeyWithoutPlaintext", "kms:DescribeKey" ], "Resource": [ "*" ] } ] }
Tutorial: creazione di un'AMI personalizzata con un volume dispositivo di root crittografato tramite una chiave KMS
La prima cosa da fare in questo esempio è trovare l'ARN di una chiave KMS o crearne una nuova. Per ulteriori informazioni sulla creazione di chiavi, consulta Creazione di chiavi nella Guida per gli sviluppatori di AWS Key Management Service . La procedura riportata di seguito illustra come aggiungere il ruolo di servizio EMR_DefaultRole
come utente chiave alla policy chiavi. Annota il valore ARN per la chiave quando la crei o la modifichi. L'ARN servirà in seguito, durante la creazione dell'AMI.
Aggiunta del ruolo di servizio per Amazon EC2 all'elenco degli utenti chiave di crittografia con la console
-
Accedi a AWS Management Console e apri la console AWS Key Management Service (AWS KMS) su https://console.aws.amazon.com/kms
. -
Per modificare la Regione AWS, utilizza il selettore della regione nell'angolo in alto a destra della pagina.
-
Scegliere l'alias della chiave KMS da utilizzare.
-
Nella pagina dei dettagli della chiave, in Key Users (Utenti di chiavi), scegli Add (Aggiungi).
-
Nella finestra di dialogo Attach (Collega), scegli il ruolo di servizio Amazon EMR. Il nome del ruolo di default è
EMR_DefaultRole
. -
Scegli Collega.
Creazione di un'AMI crittografata con la AWS CLI
-
Usa il
aws ec2 copy-image
comando di AWS CLI per creare un AMI con un volume del dispositivo root EBS crittografato e la chiave che hai modificato. Sostituisci il valore--kms-key-id
specificato con l'ARN completo della chiave creata o modificata in precedenza.Nota
I caratteri di continuazione della riga Linux (\) sono inclusi per questioni di leggibilità. Possono essere rimossi o utilizzati nei comandi Linux. Per Windows, rimuoverli o sostituirli con un accento circonflesso (^).
aws ec2 copy-image --source-image-id
MyAmiId
\ --source-regionus-west-2
--nameMyEncryptedEMRAmi
\ --encrypted --kms-key-idarn:aws:kms:us-west-2:12345678910:key/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
L'output del comando fornisce l'ID dell'AMI creata, che è possibile specificare quando si crea un cluster. Per ulteriori informazioni, consulta Utilizzare un'AMI personalizzata singola in un cluster EMR. È anche possibile scegliere di personalizzare questa AMI installando software ed eseguendo altre configurazioni. Per ulteriori informazioni, consulta Creazione di un'AMI Amazon Linux personalizzata da un'istanza preconfigurata.
Best practice e considerazioni
Quando crei un'AMI personalizzata per Amazon EMR, tieni in considerazione quanto segue:
-
La serie Amazon EMR 7.x è basata su Amazon Linux 2023. Per queste versioni Amazon EMR, è necessario utilizzare immagini basate su Amazon Linux 2023 per essere personalizzate. AMIs Per trovare un'AMI personalizzata di base, consulta Ricerca di un'AMI Linux.
-
Per le versioni di Amazon EMR precedenti alla 7.x, Amazon Linux 2023 AMIs non è supportato.
-
Amazon EMR 5.30.0 e versioni successive e le serie Amazon EMR 6.x sono basate su Amazon Linux 2. Per queste versioni Amazon EMR, è necessario utilizzare immagini personalizzate basate su Amazon Linux 2. AMIs Per trovare un'AMI personalizzata di base, consulta Ricerca di un'AMI Linux.
-
Per le versioni di Amazon EMR precedenti alla 5.30.0 e alla 6.x, Amazon Linux 2 non è supportato. AMIs
-
È necessario utilizzare un'AMI Amazon Linux a 64 bit. Non è supportata un'AMI a 32 bit.
-
Amazon EBS non è supportato AMIs con più volumi Amazon EBS.
-
La personalizzazione deve basarsi sulla versione dell'AMI Amazon Linux
più recente supportata da EBS. Per un elenco di Amazon Linux AMIs e delle AMI corrispondenti IDs, consulta Amazon Linux AMI . -
Non copiare una snapshot di un'istanza Amazon EMR esistente per creare un'AMI personalizzata, perché causa errori.
-
Sono supportati solo il tipo di virtualizzazione HVM e le istanze compatibili con Amazon EMR. Assicurati di selezionare l'immagine HVM e un tipo di istanza compatibile con Amazon EMR durante il processo di personalizzazione dell'AMI. Per le istanze e i tipi di virtualizzazione compatibili, consulta Tipi di istanze supportati con Amazon EMR.
-
Il tuo servizio ruolo deve disporre di autorizzazioni di avvio per l'AMI, perciò l'AMI deve essere pubblica oppure deve essere di tua proprietà o condivisa con te dal proprietario.
-
Creare utenti dell'AMI con nome uguale a quello delle applicazioni causa errori (ad esempio,
hadoop
,hdfs
,yarn
ospark
). -
I contenuti di
/tmp
,/var
e/emr
(se presenti sull'AMI) vengono spostati rispettivamente in/mnt/tmp
,/mnt/var
e/mnt/emr
durante lo startup. I file vengono conservati ma, in presenza di una grande quantità di dati, lo startup potrebbe richiedere più tempo del previsto. Se si utilizza un'AMI Amazon Linux personalizzata basata su un'AMI Amazon Linux con una data di creazione 2018-08-11, il server Oozie non si avvia. Se si utilizza Oozie, è possibile creare un'AMI personalizzata basata su un ID AMI Amazon Linux con una data di creazione diversa. Puoi utilizzare il AWS CLI comando seguente per restituire un elenco di immagini IDs per tutte le AMI Amazon Linux HVM AMIs con una versione 2018.03, insieme alla data di rilascio, in modo da poter scegliere un'AMI Linux appropriata come base. Sostituisci MyRegion con l'identificatore della Regione, ad esempio us-west-2.
aws ec2 --region
MyRegion
describe-images --owner amazon --query 'Images[?Name!=`null`]|[?starts_with(Name, `amzn-ami-hvm-2018.03`) == `true`].[CreationDate,ImageId,Name]' --output text | sort -rk1-
Nei casi in cui utilizzi un VPC con un nome di dominio e AmazonProvided DNS non standard, non devi utilizzare l'
rotate
opzione nella configurazione DNS dei sistemi operativi. -
Se crei un'AMI personalizzata che include l'agente Amazon EC2 Systems Manager (SSM), l'agente SSM abilitato può causare un errore di provisioning sul cluster. Per evitare ciò, disabilita l'agente SSM quando utilizzi un'AMI personalizzata. Per fare ciò, quando scegli e avvii l' EC2 istanza Amazon, disabilita l'agente SSM prima di utilizzare l'istanza per creare un'AMI personalizzata e successivamente creare il tuo cluster EMR.
Per ulteriori informazioni, consulta Creazione di un'AMI Linux supportata da Amazon EBS nella Amazon EC2 User Guide.