Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Configurer Docker pour une utilisation avec les clusters Amazon EMR
Amazon EMR 6.x prend en charge Hadoop 3, qui permet de YARN NodeManager lancer des conteneurs soit directement sur le EMR cluster Amazon, soit dans un conteneur Docker. Les conteneurs Docker fournissent des environnements d'exécution personnalisés dans lesquels le code d'application s'exécute. L'environnement d'exécution personnalisé est isolé de l'environnement d'exécution des applications YARN NodeManager et des autres applications.
Les conteneurs Docker peuvent inclure des bibliothèques spéciales utilisées par l'application et peuvent fournir différentes versions d'outils et de bibliothèques natifs, tels que R et Python. Vous pouvez utiliser des outils Docker familiers pour définir les bibliothèques et les dépendances d'exécution de vos applications.
Les clusters Amazon EMR 6.x sont configurés par défaut pour permettre aux YARN applications, telles que Spark, de s'exécuter à l'aide de conteneurs Docker. Pour personnaliser la configuration de votre conteneur, modifiez les options de support Docker définies dans les fichiers yarn-site.xml
et container-executor.cfg
disponibles dans le répertoire /etc/hadoop/conf
. Pour plus d'informations sur chaque option de configuration et son utilisation, consultez Lancement d'applications à l'aide de conteneurs Docker
Vous pouvez choisir d'utiliser Docker lorsque vous soumettez une tâche. Utilisez les variables suivantes pour spécifier l'environnement d'exécution Docker et l'image Docker.
YARN_CONTAINER_RUNTIME_TYPE=docker
YARN_CONTAINER_RUNTIME_DOCKER_IMAGE={
DOCKER_IMAGE_NAME
}
Lorsque vous utilisez des conteneurs Docker pour exécuter vos YARN applications, YARN télécharge l'image Docker que vous spécifiez lorsque vous soumettez votre travail. YARNPour résoudre cette image Docker, elle doit être configurée avec un registre Docker. Les options de configuration d'un registre Docker varient selon que vous déployez le cluster à l'aide d'un sous-réseau public ou privé.
Registres Docker
Un registre Docker est un système de stockage et de distribution pour les images Docker. Pour Amazon, EMR nous vous recommandons d'utiliser AmazonECR, un registre de conteneurs Docker entièrement géré qui vous permet de créer vos propres images personnalisées et de les héberger dans une architecture hautement disponible et évolutive.
Considérations relatives au déploiement
Les registres Docker nécessitent un accès réseau à partir de chaque hôte du cluster. Cela est dû au fait que chaque hôte télécharge des images depuis le registre Docker lorsque votre YARN application s'exécute sur le cluster. Ces exigences de connectivité réseau peuvent limiter votre choix de registre Docker, selon que vous déployez votre EMR cluster Amazon dans un sous-réseau public ou privé.
Public subnet (Sous-réseau public)
Lorsque les EMR clusters sont déployés dans un sous-réseau public, les nœuds en cours d'exécution YARN NodeManager peuvent accéder directement à n'importe quel registre disponible sur Internet.
Sous-réseau privé
Lorsque les EMR clusters sont déployés dans un sous-réseau privé, les nœuds en cours d'exécution YARN NodeManager n'ont pas d'accès direct à Internet. Les images Docker peuvent être hébergées sur Amazon ECR et accessibles via AWS PrivateLink.
Pour plus d'informations sur la manière AWS PrivateLink d'autoriser l'accès à Amazon ECR dans un scénario de sous-réseau privé, consultez Configuration AWS PrivateLink pour Amazon ECS et Amazon ECR
Configuration des registres Docker
Pour utiliser les registres Docker avec AmazonEMR, vous devez configurer Docker pour qu'il approuve le registre spécifique que vous souhaitez utiliser pour résoudre les images Docker. Les registres de confiance par défaut sont local (private) et centos. Pour utiliser d'autres référentiels publics ou AmazonECR, vous pouvez remplacer docker.trusted.registries
les paramètres lors de /etc/hadoop/conf/container-executor.cfg
l'utilisation de la EMR classification API par la clé de container-executor
classification.
L'exemple suivant montre comment configurer le cluster pour qu'il fasse confiance à la fois à un référentiel public, nomméyour-public-repo
, et à un point de terminaison de ECR registre123456789123.dkr.ecr.us-east-1.amazonaws.com
. Si vous l'utilisezECR, remplacez ce point de terminaison par votre point de ECR terminaison spécifique.
[ { "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" } } ] } ]
Pour lancer un cluster Amazon EMR 6.0.0 avec cette configuration à l'aide de AWS Command Line Interface (AWS CLI), créez un fichier nommé container-executor.json
avec le contenu de la configuration JSON ontainer-executor précédente. Ensuite, utilisez les commandes suivantes pour lancer le 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
Configuration YARN pour accéder à Amazon ECR sur EMR 6.0.0 et versions antérieures
Si vous utilisez Amazon pour la première ECR fois, suivez les instructions de la section Getting started with Amazon ECR et vérifiez que vous avez accès à Amazon ECR depuis chaque instance de votre EMR cluster Amazon.
Sur les versions EMR 6.0.0 et antérieures, pour accéder à Amazon à ECR l'aide de la commande Docker, vous devez d'abord générer des informations d'identification. Pour vérifier que YARN vous pouvez accéder aux images depuis AmazonECR, utilisez la variable d'environnement container YARN_CONTAINER_RUNTIME_DOCKER_CLIENT_CONFIG
pour transmettre une référence aux informations d'identification que vous avez générées.
Exécutez la commande suivante sur l'un des nœuds principaux pour obtenir la ligne de connexion de votre ECR compte.
aws ecr get-login --region us-east-1 --no-include-email
La get-login
commande génère la CLI commande Docker correcte à exécuter pour créer des informations d'identification. Copiez et exécutez la sortie à partir de get-login
.
sudo docker login -u AWS -p <
password
> https://<account-id
>.dkr.ecr.us-east-1.amazonaws.com
Cette commande génère un fichier config.json
dans le dossier /root/.docker
. Copiez ce fichier pour HDFS que les tâches soumises au cluster puissent l'utiliser pour s'authentifier auprès d'AmazonECR.
Exécutez les commandes ci-dessous pour copier le fichier config.json
dans votre répertoire personnel.
mkdir -p ~/.docker sudo cp /root/.docker/config.json ~/.docker/config.json sudo chmod 644 ~/.docker/config.json
Exécutez les commandes ci-dessous pour insérer le fichier config.json HDFS afin qu'il puisse être utilisé par les tâches exécutées sur le cluster.
hadoop fs -put ~/.docker/config.json /user/hadoop/
YARNpeut y accéder ECR en tant que registre d'images Docker et extraire des conteneurs lors de l'exécution des tâches.
Après avoir configuré les registres Docker etYARN, vous pouvez exécuter des YARN applications à l'aide de conteneurs Docker. Pour plus d'informations, consultez Exécuter des applications Spark avec Docker à l'aide d'Amazon EMR 6.0.0.
Dans la EMR version 6.1.0 et les versions ultérieures, il n'est pas nécessaire de configurer manuellement l'authentification auprès d'AmazonECR. Si un ECR registre Amazon est détecté dans la clé de container-executor
classification, la fonction d'authentification ECR automatique Amazon s'active et YARN gère le processus d'authentification lorsque vous soumettez une tâche Spark avec une ECR image. Vous pouvez vérifier si l'authentification automatique est activée en vérifiant yarn.nodemanager.runtime.linux.docker.ecr-auto-authentication.enabled
sur yarn-site. L'authentification automatique est activée et le paramètre YARN d'authentification est défini sur true
s'il docker.trusted.registries
contient un ECR registreURL.
Conditions préalables à l'utilisation de l'authentification automatique auprès d'Amazon ECR
EMRversion 6.1.0 ou ultérieure
ECRle registre inclus dans la configuration se trouve dans la même région que le cluster
IAMrôle autorisé pour obtenir un jeton d'autorisation et extraire n'importe quelle image
Reportez-vous à la section Configuration avec Amazon ECR pour plus d'informations.
Comment activer l'authentification automatique
Suivez cette procédure Configuration des registres Docker pour définir un ECR registre Amazon comme registre de confiance et assurez-vous que le ECR référentiel Amazon et le cluster se trouvent dans la même région.
Pour activer cette fonctionnalité même lorsque le ECR registre n'est pas défini dans le registre sécurisé, utilisez la classification de configuration yarn.nodemanager.runtime.linux.docker.ecr-auto-authentication.enabled
à définir surtrue
.
Comment désactiver l'authentification automatique
Par défaut, l'authentification automatique est désactivée si aucun ECR registre Amazon n'est détecté dans le registre sécurisé.
Pour désactiver l'authentification automatique, même lorsque le ECR registre Amazon est défini dans le registre sécurisé, utilisez la classification de configuration yarn.nodemanager.runtime.linux.docker.ecr-auto-authentication.enabled
à définir surfalse
.
Comment vérifier si l'authentification automatique est activée sur un cluster
Sur le nœud principal, utilisez un éditeur de texte tel que vi
pour afficher le contenu du fichier :vi /etc/hadoop/conf.empty/yarn-site.xml
. Vérifiez la valeur de yarn.nodemanager.runtime.linux.docker.ecr-auto-authentication.enabled
.