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 una soluzione personalizzata AMI per fornire maggiore flessibilità per la configurazione dei EMR cluster Amazon
Quando usi Amazon EMR 5.7.0 o versioni successive, puoi scegliere di specificare un Amazon Linux personalizzato AMI anziché Amazon Linux per AMI Amazon predefinito. EMR Una personalizzazione AMI è utile se vuoi fare quanto segue:
-
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 Amazon Linux personalizzato AMI da un'istanza preconfigurata.
-
Implementazione di configurazioni per cluster e nodo più sofisticate di quelle consentite dalle operazioni di bootstrap.
-
Crittografa i volumi dei dispositivi EBS root (volumi di avvio) delle EC2 istanze nel cluster se utilizzi una EMR versione di Amazon precedente alla 5.24.0. Come per impostazione predefinitaAMI, la dimensione minima del volume root per una versione personalizzata AMI è di 10 GiB per le EMR versioni di Amazon 6.9 e precedenti e di 15 GiB per le versioni di Amazon EMR 6.10 e successive. Per ulteriori informazioni, consulta Creazione di un volume di dispositivo EBS root Amazon personalizzato AMI con un volume crittografato.
Nota
A partire dalla EMR versione Amazon 5.24.0, puoi utilizzare un'opzione di configurazione di sicurezza per crittografare i dispositivi EBS root e i volumi di storage quando lo specifichi AWS KMS come provider di chiavi. Per ulteriori informazioni, consulta Crittografia del disco locale.
Una configurazione personalizzata AMI deve esistere nella stessa AWS regione in cui viene creato il cluster. Deve inoltre corrispondere all'architettura dell'EC2istanza. Ad esempio, un'istanza m5.xlarge ha un'architettura x86_64. Pertanto, per effettuare il provisioning di un m5.xlarge utilizzando un'architettura personalizzataAMI, la soluzione personalizzata AMI dovrebbe avere anche un'architettura x86_64. Allo stesso modo, per effettuare il provisioning di un'istanza m6g.xlarge, che ha un'architettura arm64, la tua soluzione personalizzata dovrebbe avere un'architettura arm64. AMI Per ulteriori informazioni sull'identificazione di un Linux AMI per il tuo tipo di istanza, consulta Find a Linux AMI in the Amazon EC2 User Guide.
Importante
EMRi cluster che eseguono Amazon Linux o Amazon Linux 2 Amazon Machine Images (AMIs) utilizzano il comportamento predefinito di Amazon Linux e non scaricano e installano automaticamente aggiornamenti del kernel importanti e critici che richiedono un riavvio. Questo è lo stesso comportamento delle altre EC2 istanze Amazon che eseguono Amazon Linux AMI predefinito. Se nuovi aggiornamenti software di Amazon Linux che richiedono un riavvio (ad esempio kernel e CUDA aggiornamenti) diventano disponibili dopo la disponibilità di una EMR versione di Amazon, le istanze EMR cluster che eseguono l'impostazione predefinita AMI non scaricano e installano automaticamente tali aggiornamenti. NVIDIA Per ottenere gli aggiornamenti del kernel, puoi personalizzare Amazon EMR AMI per utilizzare la versione più recente di Amazon Linux AMI.
Creazione di un Amazon Linux personalizzato AMI da un'istanza preconfigurata
I passaggi di base per preinstallare il software ed eseguire altre configurazioni per creare un Amazon Linux per Amazon AMI personalizzato EMR sono i seguenti:
-
Avvia un'istanza dalla base Amazon LinuxAMI.
-
Connessione all'istanza per l'installazione di software e l'esecuzione di altre personalizzazioni.
-
Crea una nuova immagine (AMIistantanea) dell'istanza che hai configurato.
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 volume di dispositivo EBS root Amazon personalizzato AMI con un volume crittografato.
Tutorial: creazione di un'istanza AMI da un'istanza con software personalizzato installato
Per avviare un'EC2istanza basata sulla versione più recente di Amazon Linux AMI
-
Utilizzate il AWS CLI per eseguire il comando seguente, che crea un'istanza da un'istanza esistenteAMI. Sostituisci
con la key pair che usi per connetterti all'istanza eMyKeyName
MyAmiId
con l'ID di un Amazon Linux appropriatoAMI. Per le versioni più recenti AMIIDs, consulta Amazon Linux AMI. 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
-
Usa una SSH connessione che ti consenta di eseguire comandi shell sulla tua istanza Linux. Per ulteriori informazioni, consulta Connessione alla tua istanza Linux utilizzando 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, usa il
create-image
comando per creare un'istanza 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, consulta Usa una singola personalizzazione AMI in un EMR cluster e Creazione di un volume di dispositivo EBS root Amazon personalizzato AMI con un volume crittografato.
Come usare un servizio personalizzato AMI in un EMR cluster Amazon
Puoi utilizzare una soluzione personalizzata AMI per effettuare il provisioning di un EMR cluster Amazon in due modi:
-
Utilizza un'unica soluzione personalizzata AMI per tutte le EC2 istanze del cluster.
-
Utilizza personalizzazioni diverse AMIs per i diversi tipi di EC2 istanza utilizzati nel cluster.
È possibile utilizzare solo una delle due opzioni durante il provisioning di un EMR cluster e non è possibile modificarla una volta avviato il cluster.
Considerazione | Singolo personalizzato AMI | Personalizzato multiplo AMIs |
---|---|---|
Utilizza processori x86 e Graviton2 con personalizzazione AMIs nello stesso cluster |
|
|
AMIla personalizzazione varia tra i tipi di istanza |
|
|
Modifica la personalizzazione AMIs quando aggiungi una nuova istanza groups/fleets to a running cluster. Note: you cannot change the custom AMI of existing instance groups/fleets di attività. |
|
|
Usa AWS Console per avviare un cluster |
|
|
Utilizzare AWS CloudFormation per avviare un cluster |
|
|
Usa una singola personalizzazione AMI in un EMR cluster
Per specificare un AMI ID personalizzato quando crei un cluster, utilizza uno dei seguenti:
-
AWS Management Console
-
AWS CLI
-
Amazon EMR SDK
-
Amazon EMR API 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 EMR cluster Amazon
Per creare un cluster utilizzando più elementi personalizzatiAMIs, utilizza uno dei seguenti:
-
AWS CLIversione 1.20.21 o successiva
-
AWS SDK
-
Amazon EMR RunJobFlownella pagina di EMRAPIriferimento di Amazon
-
AWS CloudFormation (vedi la
CustomAmiID
proprietà in Cluster InstanceGroupConfig, Cluster InstanceTypeConfig InstanceGroupConfig, Resource o Resource InstanceFleetConfig - InstanceTypeConfig)
La console di AWS gestione attualmente non supporta la creazione di un cluster utilizzando più elementi personalizzatiAMIs.
Esempio - Utilizzate il AWS CLI per creare un cluster di gruppi di istanze utilizzando più cluster personalizzati AMIs
Utilizzando la AWS CLI versione 1.20.21 o successiva, è possibile assegnare una singola personalizzazione AMI all'intero cluster oppure assegnare più opzioni personalizzate 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 più elementi personalizzati. AMIs L'esempio illustra diverse funzionalità della AMI configurazione personalizzata multipla:
-
Non è AMI stata assegnata alcuna personalizzazione a livello di cluster. Questo serve a evitare conflitti tra più personalizzazioni AMIs e una singola personalizzazioneAMI, che potrebbero causare il fallimento dell'avvio del cluster.
-
Il cluster può avere più nodi di attività personalizzati AMIs tra nodi di attività primari, principali e individuali. Ciò consente AMI personalizzazioni individuali, come applicazioni preinstallate, configurazioni di cluster sofisticate e volumi di dispositivi EBS root Amazon crittografati.
-
Il nodo principale del gruppo di istanze può avere un solo tipo di istanza e una configurazione personalizzata corrispondente. AMI Analogamente, il nodo primario può avere un solo tipo di istanza e una versione personalizzata corrispondenteAMI.
-
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 - Utilizzate la AWS CLI versione 1.20.21 o successiva per aggiungere un nodo task a un cluster di gruppi di istanze in esecuzione con più tipi di istanze e più istanze personalizzate AMIs
Utilizzando la AWS CLI versione 1.20.21 o successiva, è possibile aggiungere più elementi personalizzati AMIs a un gruppo di istanze da aggiungere a un cluster in esecuzione. L'argomento CustomAmiId
può essere utilizzato con il comando add-instance-groups
come mostrato nell'esempio seguente. Notate che lo stesso AMI ID personalizzato multiplo (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 - Utilizzate la AWS CLI versione 1.20.21 o successiva per creare un cluster di istanze, più nodi personalizzati e di più tipi di istanze, nodi principali On-DemandAMIs, core On-Demand, nodi core multipli e task
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 - Utilizzate la AWS CLI versione 1.20.21 o successiva per aggiungere nodi di attività a un cluster in esecuzione con più tipi di istanze e più opzioni 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 del repository dei AMI pacchetti
Al primo avvio, per impostazione predefinita, Amazon Linux si AMIs connette agli archivi di pacchetti per installare gli aggiornamenti di sicurezza prima dell'avvio di altri servizi. A seconda delle tue esigenze, puoi scegliere di disabilitare questi aggiornamenti quando ne specifichi uno personalizzato AMI per AmazonEMR. L'opzione per disabilitare questa funzionalità è disponibile solo quando utilizzi una funzionalità personalizzataAMI. Per impostazione predefinita, il kernel di Amazon Linux e altri pacchetti software che richiedono un riavvio non vengono aggiornati. Tieni presente che la configurazione di rete deve consentire l'HTTPSingresso HTTP e l'uscita verso i repository Amazon Linux in Amazon S3, altrimenti gli aggiornamenti di sicurezza non avranno esito positivo.
avvertimento
Ti consigliamo vivamente di scegliere di aggiornare tutti i pacchetti installati al riavvio quando ne specifichi uno personalizzato. AMI La scelta di non aggiornare pacchetti crea maggiori rischi per la sicurezza.
Con AWS Management Console, puoi selezionare l'opzione per disabilitare gli aggiornamenti quando scegli Personalizzato AMI.
Con AWS CLI, è possibile specificare --repo-upgrade-on-boot NONE
insieme a --custom-ami-id
quando si utilizza il create-cluster comando.
Con Amazon EMRAPI, puoi specificare NONE
il RepoUpgradeOnBootparametro.
Creazione di un volume di dispositivo EBS root Amazon personalizzato AMI con un volume crittografato
Per crittografare il volume del dispositivo EBS root Amazon di Amazon Linux AMI per AmazonEMR, copia un'immagine istantanea da una destinazione non crittografata AMI a una destinazione crittografata. Per informazioni sulla creazione di EBS volumi crittografati, consulta Amazon EBS encryption nella Amazon EC2 User Guide. L'origine AMI per lo snapshot può essere Amazon Linux AMI di base oppure puoi copiare uno snapshot da un AMI derivato Amazon Linux di base AMI che hai personalizzato.
Nota
A partire dalla EMR versione Amazon 5.24.0, puoi utilizzare un'opzione di configurazione di sicurezza per crittografare i dispositivi EBS root e i volumi di storage quando lo specifichi AWS KMS come provider di chiavi. Per ulteriori informazioni, consulta Crittografia del disco locale.
Puoi utilizzare un provider di chiavi esterno o una AWS KMS chiave per crittografare il volume root. EBS Il ruolo di servizio EMR utilizzato da Amazon (in genere quello predefinitoEMR_DefaultRole
) deve essere consentito di crittografare e decrittografare il volume, come minimo, affinché Amazon possa EMR creare un cluster con. AMI Quando viene utilizzato 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 volume personalizzato AMI con un dispositivo root crittografato utilizzando una KMS chiave
Il primo passaggio in questo esempio consiste nel trovare la chiave ARN di una KMS chiave 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 ARNvalore della chiave mentre la crei o la modifichi. Il ARN valore più alto viene utilizzato quando si crea ilAMI.
Per aggiungere il ruolo di servizio per Amazon EC2 all'elenco degli utenti con 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 il Regione AWS, usa il selettore della regione nell'angolo in alto a destra della pagina.
-
Scegliete l'alias della chiave da usare. KMS
-
Nella pagina dei dettagli della chiave, in Key Users (Utenti di chiavi), scegli Add (Aggiungi).
-
Nella finestra di dialogo Allega, scegli il ruolo del EMR servizio Amazon. Il nome del ruolo di default è
EMR_DefaultRole
. -
Scegli Collega.
Per creare un file crittografato AMI con AWS CLI
-
Utilizzate il
aws ec2 copy-image
comando di AWS CLI per creare un volume AMI con un dispositivo EBS root criptato e la chiave che avete modificato. Sostituisci il--kms-key-id
valore specificato con quello completo ARN della chiave che hai creato o modificato in basso.Nota
I caratteri di continuazione della riga Linux (\) sono inclusi per questioni di leggibilità. Possono essere rimossi o utilizzati nei comandi Linux. Per Windows, rimuovili o sostituiscili 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 del file AMI creato, che è possibile specificare quando si crea un cluster. Per ulteriori informazioni, consulta Usa una singola personalizzazione AMI in un EMR cluster. È inoltre possibile scegliere di personalizzarlo AMI installando software ed eseguendo altre configurazioni. Per ulteriori informazioni, consulta Creazione di un Amazon Linux personalizzato AMI da un'istanza preconfigurata.
Best practice e considerazioni
Quando crei una personalizzazione AMI per AmazonEMR, considera quanto segue:
-
La serie Amazon EMR 7.x è basata su Amazon Linux 2023. Per queste EMR versioni di Amazon, devi utilizzare immagini basate su Amazon Linux 2023 per scopi personalizzatiAMIs. Per trovare una base personalizzataAMI, consulta Finding a Linux AMI.
-
Per EMR le versioni di Amazon precedenti alla 7.x, Amazon Linux 2023 AMIs non è supportato.
-
Amazon EMR 5.30.0 e versioni successive e la serie Amazon EMR 6.x sono basate su Amazon Linux 2. Per queste EMR versioni di Amazon, devi utilizzare immagini basate su Amazon Linux 2 per scopi personalizzatiAMIs. Per trovare una base personalizzataAMI, consulta Finding a Linux AMI.
-
Per EMR le versioni di Amazon precedenti alla 5.30.0 e 6.x, Amazon Linux 2 AMIs non è supportato.
-
È necessario utilizzare un Amazon Linux a 64 bitAMI. Una versione a 32 bit non AMI è supportata.
-
Amazon Linux AMIs con più EBS volumi Amazon non è supportato.
-
Basa la tua personalizzazione sulla versione più recente di EBS Amazon
Linux supportata. AMI Per un elenco di Amazon Linux AMIs e corrispondenti AMIIDs, consulta Amazon Linux AMI . -
Non copiare uno snapshot di un'EMRistanza Amazon esistente per crearne una personalizzataAMI. perché causa errori.
-
Sono supportati solo il tipo di HVM virtualizzazione e le istanze compatibili con AmazonEMR. Assicurati di selezionare l'HVMimmagine e un tipo di istanza compatibili con Amazon EMR durante il processo di AMI personalizzazione. Per le istanze e i tipi di virtualizzazione compatibili, consulta Tipi di istanze supportati con Amazon EMR.
-
Il tuo ruolo di servizio deve avere le autorizzazioni di avvio suAMI, quindi AMI deve essere pubblico oppure devi esserne il proprietario AMI o farlo condividere con te dal proprietario.
-
La creazione di utenti AMI con lo stesso nome delle applicazioni causa errori (ad esempio
hadoop
,hdfs
yarn
, ospark
). -
I contenuti di
/tmp
/var
, e/emr
(se presenti inAMI) vengono/mnt/tmp
spostati/mnt/emr
rispettivamente in e durante l'avvio./mnt/var
I file vengono conservati ma, in presenza di una grande quantità di dati, lo startup potrebbe richiedere più tempo del previsto. Se usi un Amazon Linux personalizzato AMI basato su Amazon Linux AMI con una data di creazione dell'11/08/2018, il server Oozie non si avvia. Se usi Oozie, creane uno personalizzato AMI basato su un AMI ID Amazon Linux con una data di creazione diversa. Puoi usare il seguente AWS CLI comando per restituire un elenco di immagini IDs per tutti gli HVM Amazon Linux AMIs con una versione 2018.03, insieme alla data di rilascio, in modo da poter scegliere un Amazon Linux appropriato AMI come base. MyRegion Sostituiscilo con il tuo identificativo regionale, 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 nome VPC di dominio non standard e AmazonProvidedDNS, non dovresti usare l'
rotate
opzione nella configurazione dei sistemi operativi. DNS -
Se crei un prodotto personalizzato AMI che include l'agente Amazon EC2 Systems Manager (SSM), l'SSMagente abilitato può causare un errore di provisioning nel cluster. Per evitare che ciò si verifichi, disabilita l'SSMagente quando usi un prodotto personalizzatoAMI. Per fare ciò, quando scegli e avvii l'EC2istanza Amazon, disabilita l'SSMagente prima di utilizzare l'istanza per creare un cluster personalizzato AMI e successivamente creare il tuo EMR cluster.
Per ulteriori informazioni, consulta Creare un Linux EBS supportato da Amazon AMI nella Amazon EC2 User Guide.