Seleziona le tue preferenze relative ai cookie

Utilizziamo cookie essenziali e strumenti simili necessari per fornire il nostro sito e i nostri servizi. Utilizziamo i cookie prestazionali per raccogliere statistiche anonime in modo da poter capire come i clienti utilizzano il nostro sito e apportare miglioramenti. I cookie essenziali non possono essere disattivati, ma puoi fare clic su \"Personalizza\" o \"Rifiuta\" per rifiutare i cookie prestazionali.

Se sei d'accordo, AWS e le terze parti approvate utilizzeranno i cookie anche per fornire utili funzionalità del sito, ricordare le tue preferenze e visualizzare contenuti pertinenti, inclusa la pubblicità pertinente. Per continuare senza accettare questi cookie, fai clic su \"Continua\" o \"Rifiuta\". Per effettuare scelte più dettagliate o saperne di più, fai clic su \"Personalizza\".

Configura Docker per l'uso con i cluster Amazon EMR

Modalità Focus
Configura Docker per l'uso con i cluster Amazon EMR - Amazon EMR

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

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à.

Amazon EMR 6.x supporta Hadoop 3, che consente NodeManager a YARN di avviare container direttamente sul cluster Amazon EMR o all'interno di un container Docker. I contenitori Docker forniscono ambienti di esecuzione personalizzati in cui viene eseguito il codice dell'applicazione. L'ambiente di esecuzione personalizzato è isolato dall'ambiente di esecuzione di YARN e di altre applicazioni. NodeManager

I contenitori Docker possono includere librerie speciali utilizzate dall'applicazione e possono fornire diverse versioni di strumenti e librerie native, come R e Python. È possibile utilizzare gli strumenti Docker familiari per definire librerie e dipendenze di runtime per le applicazioni.

I cluster Amazon EMR 6.x sono configurati per impostazione predefinita per consentire alle applicazioni YARN, ad esempio Spark, di essere eseguite utilizzando container Docker. Per personalizzare la configurazione del container, modificare le opzioni di supporto Docker definite nei file yarn-site.xml e container-executor.cfg disponibili nella directory /etc/hadoop/conf. Per informazioni dettagliate su ciascuna opzione di configurazione e su come viene utilizzata, consulta Avvio di applicazioni utilizzando contenitori Docker.

È possibile scegliere di utilizzare Docker quando si invia un processo. Utilizzare le variabili seguenti per specificare il runtime Docker e l'immagine Docker.

  • YARN_CONTAINER_RUNTIME_TYPE=docker

  • YARN_CONTAINER_RUNTIME_DOCKER_IMAGE={DOCKER_IMAGE_NAME}

Quando si utilizzano contenitori Docker per eseguire le applicazioni YARN, YARN scarica l'immagine Docker specificata quando si invia il lavoro. Per fare in modo che YARN risolva questa immagine Docker, è necessario configurarla con un Registro di sistema Docker. Le opzioni di configurazione per un Registro di sistema Docker dipendono dal fatto che si distribuisca il cluster utilizzando una sottorete pubblica o privata.

Registri Docker

Un registro Docker è un sistema di archiviazione e distribuzione per le immagini Docker. Per Amazon EMR ti consigliamo di usare Amazon ECR, che è un registro del container Docker completamente gestito, che consente di creare le proprie immagini personalizzate e ospitarle in un'architettura altamente disponibile e scalabile.

Considerazioni sulla distribuzione

I registri Docker richiedono l'accesso alla rete da ciascun host nel cluster. Questo perché ogni host scarica immagini dal Registro di sistema Docker quando l'applicazione YARN è in esecuzione nel cluster. Questi requisiti di connettività di rete possono limitare la scelta del Registro di sistema Docker, a seconda che si distribuisca il cluster Amazon EMR in una sottorete pubblica o privata.

Public subnet (Sottorete pubblica)

Quando i cluster EMR vengono distribuiti in una sottorete pubblica, i nodi che eseguono YARN NodeManager possono accedere direttamente a qualsiasi registro disponibile su Internet.

Sottorete privata

Quando i cluster EMR vengono distribuiti in una sottorete privata, i nodi che eseguono YARN NodeManager non hanno accesso diretto a Internet. Le immagini Docker possono essere ospitate in Amazon ECR e accessibili tramite. AWS PrivateLink

Per ulteriori informazioni su come utilizzare per consentire l'accesso AWS PrivateLink ad Amazon ECR in uno scenario di sottorete privata, consulta Configurazione per AWS PrivateLink Amazon ECS e Amazon ECR.

Configurazione dei registri Docker

Per utilizzare i registri Docker con Amazon EMR, è necessario configurare Docker per considerare attendibile il Registro di sistema specifico che si desidera utilizzare per risolvere le immagini Docker. I registri di trust predefiniti sono locali (privati) e centos. Per utilizzare altri repository pubblici oppure Amazon ECR, è possibile ignorare le impostazioni docker.trusted.registries in /etc/hadoop/conf/container-executor.cfg utilizzando l'API di classificazione EMR con la chiave di classificazione container-executor.

Nell'esempio seguente viene illustrato come configurare il cluster per considerare attendibile sia un repository pubblico, denominato your-public-repo, sia un endpoint del Registro di sistema ECR, denominato 123456789123.dkr.ecr.us-east-1.amazonaws.com. Se si utilizza ECR, sostituire questo endpoint con l'endpoint ECR specifico.

[ { "Classification": "container-executor", "Configurations": [ { "Classification": "docker", "Properties": { "docker.trusted.registries": "local,centos,your-public-repo,123456789123.dkr.ecr.us-east-1.amazonaws.com", "docker.privileged-containers.registries": "local,centos,your-public-repo,123456789123.dkr.ecr.us-east-1.amazonaws.com" } } ] } ]

Per avviare un cluster Amazon EMR 6.0.0 con questa configurazione utilizzando AWS Command Line Interface (AWS CLI), crea un file denominato container-executor.json con il contenuto della precedente configurazione JSON di ontainer-executor. Quindi, utilizzare i seguenti comandi per avviare il cluster.

export KEYPAIR=<Name of your Amazon EC2 key-pair> export SUBNET_ID=<ID of the subnet to which to deploy the cluster> export INSTANCE_TYPE=<Name of the instance type to use> export REGION=<Region to which to deploy the cluster> aws emr create-cluster \ --name "EMR-6.0.0" \ --region $REGION \ --release-label emr-6.0.0 \ --applications Name=Hadoop Name=Spark \ --service-role EMR_DefaultRole \ --ec2-attributes KeyName=$KEYPAIR,InstanceProfile=EMR_EC2_DefaultRole,SubnetId=$SUBNET_ID \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=$INSTANCE_TYPE InstanceGroupType=CORE,InstanceCount=2,InstanceType=$INSTANCE_TYPE \ --configuration file://container-executor.json

Configurazione di YARN per accedere ad Amazon ECR su EMR 6.0.0 e versioni precedenti

Se sei nuovo su Amazon ECR, segui le istruzioni riportate in Guida introduttiva di Amazon ECR e verifica di avere accesso ad Amazon ECR da ogni istanza del cluster Amazon EMR.

Su EMR 6.0.0 e versioni successive, per accedere ad Amazon ECR utilizzando il comando Docker è necessario innanzitutto generare le credenziali. Per verificare se YARN può accedere alle immagini da Amazon ECR, utilizza la variabile di ambiente container YARN_CONTAINER_RUNTIME_DOCKER_CLIENT_CONFIG per passare un riferimento alle credenziali generate.

Eseguire il seguente comando su uno dei nodi principali per ottenere la riga di accesso per l'account ECR.

aws ecr get-login --region us-east-1 --no-include-email

Il comando get-login genera il comando CLI Docker corretto da eseguire per creare le credenziali. Copiare ed eseguire l'output da get-login.

sudo docker login -u AWS -p <password> https://<account-id>.dkr.ecr.us-east-1.amazonaws.com

Questo comando genera un file config.json nella cartella /root/.docker. Copia questo file in HDFS in modo che i processi inviati al cluster possano utilizzarlo per autenticarsi in Amazon ECR.

Eseguire i comandi riportati di seguito per copiare il file config.json nella directory home.

mkdir -p ~/.docker sudo cp /root/.docker/config.json ~/.docker/config.json sudo chmod 644 ~/.docker/config.json

Eseguire i comandi riportati di seguito per inserire config.json in HDFS in modo che possa essere utilizzato dai processi in esecuzione nel cluster.

hadoop fs -put ~/.docker/config.json /user/hadoop/

YARN può accedere a ECR come registro immagini Docker ed estrarre contenitori durante l'esecuzione del processo.

Dopo aver configurato i registri Docker e YARN, è possibile eseguire applicazioni YARN utilizzando contenitori Docker. Per ulteriori informazioni, consulta Esecuzione di applicazioni Spark con Docker utilizzando Amazon EMR 6.0.0.

In EMR 6.1.0 e versioni successive, non è necessario configurare manualmente l'autenticazione su Amazon ECR. Se viene rilevato un registro Amazon ECR nella chiave di classificazione container-executor, viene attivata la funzione di autenticazione automatica Amazon ECR e YARN gestisce il processo di autenticazione quando si invia un processo Spark con un'immagine ECR. È possibile verificare se l'autenticazione automatica è abilitata controllando yarn.nodemanager.runtime.linux.docker.ecr-auto-authentication.enabled in yarn-site. L'autenticazione automatica è abilitata e l'impostazione di autenticazione YARN è impostata su true se docker.trusted.registries contiene un URL del registro ECR.

Prerequisiti per l'utilizzo dell'autenticazione automatica per Amazon ECR

  • EMR versione 6.1.0 o versioni successive

  • Il registro ECR incluso nella configurazione si trova nella stessa Regione con il cluster

  • Ruolo IAM con autorizzazioni per ottenere token di autorizzazione ed estrarre qualsiasi immagine

Per ulteriori informazioni, consulta Configurazione di Amazon ECR.

Come abilitare l'autenticazione automatica

Segui Configurazione dei registri Docker per impostare un registro Amazon ECR come registro attendibile e assicurarti che il repository Amazon ECR e il cluster si trovino nella stessa Regione.

Per attivare questa caratteristica anche quando il registro ECR non è impostato nel registro attendibile, utilizza la classificazione di configurazione per impostare yarn.nodemanager.runtime.linux.docker.ecr-auto-authentication.enabled su true.

Come disabilitare l'autenticazione automatica

Per impostazione predefinita, l'autenticazione automatica viene disattivata se non viene rilevato alcun registro Amazon ECR nel registro attendibile.

Per disattivare l'autenticazione automatica anche quando il registro Amazon ECR è impostato nel registro attendibile, utilizza la classificazione di configurazione per impostare yarn.nodemanager.runtime.linux.docker.ecr-auto-authentication.enabled su false.

Come verificare se l'autenticazione automatica è abilitata in un cluster

Sul nodo master, utilizza un editor di testo come vi per visualizzare il contenuto del file: vi /etc/hadoop/conf.empty/yarn-site.xml. Verifica il valore di yarn.nodemanager.runtime.linux.docker.ecr-auto-authentication.enabled.

PrivacyCondizioni del sitoPreferenze cookie
© 2025, Amazon Web Services, Inc. o società affiliate. Tutti i diritti riservati.