Simplifiez votre gestion des dépendances Spark avec Docker dans EMR 6.0.0: idk.dev – Bien choisir son serveur d impression
Apache Spark est un puissant moteur de traitement de données qui fournit aux équipes d'analystes de données et d'ingénierie des API et des outils faciles à utiliser pour analyser leurs données, mais il peut être difficile pour les équipes de gérer leurs dépendances de bibliothèque Python et R. L'installation de chaque dépendance dont un travail peut avoir besoin avant son exécution et la gestion des conflits de version de bibliothèque prend du temps et est compliquée. Amazon EMR 6.0.0 simplifie cela en vous permettant d'utiliser des images Docker à partir de Docker Hub et Amazon ECR pour empaqueter vos dépendances. Cela vous permet de regrouper et de gérer vos dépendances pour des travaux Spark ou des blocs-notes individuels, sans avoir à gérer une toile d'araignée de dépendances sur votre cluster.
Cet article vous montre comment utiliser Docker pour gérer les dépendances des ordinateurs portables avec Amazon EMR 6.0.0 et EMR Notebooks. Vous allez lancer un cluster EMR 6.0.0 et utiliser des images Docker spécifiques à un ordinateur portable d'Amazon ECR avec votre ordinateur portable EMR.
Sommaire
Création d'une image Docker
La première étape consiste à créer une image Docker contenant Python 3 et la dernière version du engourdi
Paquet Python. Vous créez des images Docker à l'aide d'un Dockerfile, qui définit les packages et la configuration à inclure dans l'image. Les images Docker utilisées avec Amazon EMR 6.0.0 doivent contenir un kit de développement Java (JDK); le Dockerfile suivant utilise Amazon Linux 2 et Amazon Corretto JDK 8:
Vous allez utiliser ce Dockerfile pour créer une image Docker, puis la baliser et la télécharger sur Amazon ECR. Après l'avoir téléchargé, vous lancerez un cluster EMR 6.0.0 configuré pour utiliser cette image Docker comme image par défaut pour les travaux Spark. Effectuez les étapes suivantes pour créer, étiqueter et télécharger votre image Docker:
- Créez un répertoire et un nouveau fichier nommé
Dockerfile
en utilisant les commandes suivantes: - Copiez, puis collez le contenu du Dockerfile, enregistrez-le et exécutez la commande suivante pour créer une image Docker:
- Créez le
emr-docker-examples
Référentiel Amazon ECR pour cette procédure pas à pas à l'aide de la commande suivante: - Balisez l'image construite localement et remplacez 123456789123.dkr.ecr.us-east-1.amazonaws.com avec votre point de terminaison Amazon ECR, à l'aide de la commande suivante:
Avant de pouvoir envoyer l'image Docker vers Amazon ECR, vous devez vous connecter.
- Pour obtenir la ligne de connexion de votre compte Amazon ECR, utilisez la commande suivante:
- Entrez et exécutez la sortie du
get-login
commander: - Téléchargez l'image construite localement sur Amazon ECR et remplacez 123456789123.dkr.ecr.us-east-1.amazonaws.com avec votre point de terminaison Amazon ECR. Voir la commande suivante:
Une fois cette transmission terminée, l'image Docker peut être utilisée avec votre cluster EMR.
Lancement d'un cluster EMR 6.0.0 avec Docker activé
Pour utiliser Docker avec Amazon EMR, vous devez lancer votre cluster EMR avec la prise en charge de l'exécution Docker activée et avoir la bonne configuration en place pour vous connecter à votre compte Amazon ECR. Pour permettre à votre cluster de télécharger des images à partir d'Amazon ECR, assurez-vous que le profil d'instance de votre cluster dispose des autorisations de la AmazonEC2ContainerRegistryReadOnly
politique gérée qui lui est associée. La configuration de la première étape ci-dessous configure votre cluster EMR 6.0.0 pour utiliser Amazon ECR pour télécharger des images Docker et configure Apache Livy et Apache Spark pour utiliser le pyspark-latest
Image Docker comme image Docker par défaut pour tous les travaux Spark. Effectuez les étapes suivantes pour lancer votre cluster:
- Créez un fichier nommé
emr-configuration.json
dans le répertoire local avec la configuration suivante (remplacez 123456789123.dkr.ecr.us-east-1.amazonaws.com avec votre point de terminaison Amazon ECR):Vous utiliserez cette configuration pour lancer votre cluster EMR 6.0.0 à l'aide de l'AWS CLI.
- Entrez les commandes suivantes (remplacez ma clé avec le nom de la paire de clés EC2 que vous utilisez pour accéder au cluster à l'aide de SSH, et subnet-1234567 avec l'ID de sous-réseau dans lequel le cluster doit être lancé):
Une fois le cluster lancé et se trouve dans le
Attendre
, assurez-vous que les hôtes du cluster peuvent s'authentifier auprès d'Amazon ECR et télécharger des images Docker. - Utilisez votre paire de clés EC2 pour SSH dans l'un des nœuds principaux du cluster.
- Pour générer la commande Docker CLI pour créer les informations d'identification (valides pendant 12 heures) que le cluster utilise pour télécharger des images Docker à partir d'Amazon ECR, entrez la commande suivante:
- Entrez et exécutez la sortie du
get-login
commander:Cette commande génère un
config.json
fichier dans le/root/.docker
dossier. - Placer le généré
config.json
fichier à l'emplacement HDFS/ user / hadoop /
en utilisant la commande suivante:
Maintenant que vous avez un cluster EMR configuré avec Docker et une image dans Amazon ECR, vous pouvez utiliser les ordinateurs portables EMR pour créer et exécuter votre ordinateur portable.
Création d'un ordinateur portable EMR
Les blocs-notes EMR sont des blocs-notes Jupyter sans serveur disponibles directement via la console Amazon EMR. Ils vous permettent de séparer votre environnement de bloc-notes de votre infrastructure de cluster sous-jacente et d'accéder à votre bloc-notes sans passer de temps à configurer l'accès SSH ou à configurer votre navigateur pour la redirection de port. Vous pouvez trouver des ordinateurs portables EMR dans la navigation de gauche de la console EMR.
Pour créer votre bloc-notes, procédez comme suit:
- Cliquer sur Des cahiers dans le Console EMR
- Choisissez un nom pour votre ordinateur portable
- Cliquez sur Choisissez un cluster existant et sélectionnez le cluster que vous venez de créer
- Cliquez sur Créer un cahier
- Une fois que votre ordinateur portable est en état Prêt, vous pouvez cliquer sur le Ouvrir dans JupyterLab pour l'ouvrir dans un nouvel onglet du navigateur. Un bloc-notes par défaut avec le nom de votre bloc-notes EMR est créé par défaut. Lorsque vous cliquez sur ce bloc-notes, vous serez invité à choisir un noyau. Choisir PySpark.
- Entrez la configuration suivante dans la première cellule de votre bloc-notes et cliquez sur ▸ (Exécuter):
- Saisissez le code PySpark suivant dans votre bloc-notes et cliquez sur ▸ (Exécuter):
La sortie devrait ressembler à la capture d'écran suivante; la version numpy utilisée est la plus récente (au moment de la rédaction de ce document, 1.18.2).
Ce code PySpark a été exécuté sur votre cluster EMR 6.0.0 à l'aide de YARN, Docker et du pyspark-latest
l'image que vous avez créée. Les ordinateurs portables EMR se connectent aux clusters EMR à l'aide d'Apache Livy. La configuration spécifiée dans emr-configuration.json
configuré les instances Spark et Livy de votre cluster EMR pour utiliser Docker et pyspark-latest
Image Docker comme image Docker par défaut pour tous les travaux Spark soumis à ce cluster. Cela vous permet d'utiliser engourdi
sans avoir à l'installer sur des nœuds de cluster. La section suivante explique comment créer et utiliser différentes images Docker pour des blocs-notes spécifiques.
Utilisation d'une image Docker personnalisée pour un ordinateur portable spécifique
Les charges de travail individuelles nécessitent souvent des versions spécifiques des dépendances de bibliothèque. Pour permettre à chaque bloc-notes d'utiliser ses propres images Docker, vous devez d'abord créer une nouvelle image Docker et la pousser vers Amazon ECR. Vous configurez ensuite votre ordinateur portable pour utiliser cette image Docker au lieu de l'image par défaut pyspark-latest
image.
Effectuez les étapes suivantes:
- Créer un nouveau Dockerfile avec une version spécifique de
engourdi
: 1.17.5. - Créez un répertoire et un nouveau fichier nommé
Dockerfile
en utilisant les commandes suivantes: - Entrez le contenu de votre nouveau Dockerfile et le code suivant pour créer une image Docker:
- Marquer et télécharger l'image construite localement sur Amazon ECR et remplacer 123456789123.dkr.ecr.us-east-1.amazonaws.com avec votre point de terminaison Amazon ECR à l'aide des commandes suivantes:
Maintenant que l'image Docker numpy-1-17 est disponible dans Amazon ECR, vous pouvez l'utiliser avec un nouveau bloc-notes.
- Créez un nouveau bloc-notes en revenant à votre bloc-notes EMR et cliquez sur Fichier, nouveau, bloc-noteset choisissez le PySpark Pour indiquer à votre ordinateur portable EMR d'utiliser cette image Docker spécifique au lieu de l'image par défaut, vous devez utiliser les paramètres de configuration suivants.
- Entrez le code suivant dans votre carnet (remplacez 123456789123.dkr.ecr.us-east-1.amazonaws.com avec votre point de terminaison Amazon ECR) et choisissez ▸ (Exécuter):
Pour vérifier si votre code PySpark utilise la version 1.17.5, entrez le même code PySpark qu'avant pour utiliser numpy et sortir la version.
- Entrez le code suivant dans votre carnet et choisissez Courir:
La sortie devrait ressembler à la capture d'écran suivante; la version numpy utilisée est la version que vous avez installée sur votre numpy-1-17
Image Docker: 1.17.5.
Sommaire
Cet article vous a montré comment simplifier votre gestion des dépendances Spark à l'aide d'Amazon EMR 6.0.0 et de Docker. Vous avez créé une image Docker pour empaqueter vos dépendances Python, créé un cluster configuré pour utiliser Docker et utilisé cette image Docker avec un bloc-notes EMR pour exécuter des travaux PySpark. Pour en savoir plus sur l'utilisation d'images Docker avec EMR, consultez la documentation EMR sur la façon d'exécuter des applications Spark avec Docker à l'aide d'Amazon EMR 6.0.0. Restez à l'écoute pour des mises à jour supplémentaires sur les nouvelles fonctionnalités et d'autres améliorations avec Apache Spark sur Amazon EMR.
A propos de l'auteur
Paul Codding est chef de produit senior pour EMR chez Amazon Web Services.
Suthan Phillips est un architecte Big Data chez AWS. Il travaille avec les clients pour leur fournir des conseils architecturaux et les aide à améliorer les performances des applications complexes sur Amazon EMR. Dans ses temps libres, il aime faire de la randonnée et explorer le nord-ouest du Pacifique.
Commentaires
Laisser un commentaire