Installation et utilisation de noyaux et de bibliothèques dans Studio EMR - Amazon EMR

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.

Installation et utilisation de noyaux et de bibliothèques dans Studio EMR

Chaque EMR bloc-notes est livré avec un ensemble de bibliothèques et de noyaux préinstallés. Vous pouvez installer des bibliothèques et des noyaux supplémentaires dans un EMR cluster si celui-ci a accès au référentiel dans lequel se trouvent les noyaux et les bibliothèques. Par exemple, pour les clusters situés dans des sous-réseaux privés, vous devrez peut-être configurer la traduction d'adresses réseau (NAT) et fournir un chemin permettant au cluster d'accéder au référentiel public PyPI afin d'installer une bibliothèque. Pour plus d'informations sur la configuration de l'accès externe pour différentes configurations réseau, consultez Scénarios et exemples dans le guide de VPC l'utilisateur Amazon.

Note

EMRLes blocs-notes sont disponibles sous forme d'espaces de travail de EMR studio dans la console. Le bouton Créer un espace de travail de la console vous permet de créer de nouveaux blocs-notes. Pour accéder aux espaces de travail ou les créer, les utilisateurs de EMR Notebooks ont besoin d'autorisations de IAM rôle supplémentaires. Pour plus d'informations, consultez Amazon EMR Notebooks are Amazon EMR Studio Workspaces dans la console et dans la console Amazon EMR.

EMRLes applications sans serveur sont fournies avec les bibliothèques préinstallées suivantes pour Python et : PySpark

  • Bibliothèques Python — ggplot, matplotlib, numpy, pandas, plotly, bokeh, scikit-learn, scipy, scipy

  • PySpark bibliothèques — ggplot, matplotlib, numpy, pandas, plotly, bokeh, scikit-learn, scipy, scipy

Installation des noyaux et des bibliothèques Python sur le nœud primaire d'un cluster

Avec les EMR versions 5.30.0 et ultérieures d'Amazon, à l'exception de la version 6.0.0, vous pouvez installer des bibliothèques et des noyaux Python supplémentaires sur le nœud principal du cluster. Après l'installation, ces noyaux et bibliothèques sont accessibles à tous les utilisateurs utilisant un EMR bloc-notes rattaché au cluster. Les bibliothèques Python installées de cette façon ne sont disponibles que pour les processus s'exécutant sur le nœud primaire. Les bibliothèques ne sont pas installées sur les nœuds principaux ou de tâche et ne sont pas disponibles pour les exécuteurs s'exécutant sur ces nœuds.

Note

Pour EMR les versions 5.30.1, 5.31.0 et 6.1.0 d'Amazon, vous devez prendre des mesures supplémentaires afin d'installer les noyaux et les bibliothèques sur le nœud principal d'un cluster.

Pour activer cette fonctionnalité, procédez comme suit :

  1. Assurez-vous que la politique d'autorisation associée au rôle de service pour les EMR blocs-notes autorise les actions suivantes :

    elasticmapreduce:ListSteps

    Pour plus d'informations, voir Rôle de service pour les EMR ordinateurs portables.

  2. Utilisez le AWS CLI pour exécuter une étape sur le cluster qui configure les EMR blocs-notes, comme indiqué dans l'exemple suivant. Vous devez utiliser le nom d'étape EMRNotebooksSetup. Remplacez us-east-1 avec la région dans laquelle réside votre cluster. Pour plus d'informations sur l'ajout d'étapes, consultez la rubrique Ajout d'étapes à un cluster à l'aide de la AWS CLI.

    aws emr add-steps --cluster-id MyClusterID --steps Type=CUSTOM_JAR,Name=EMRNotebooksSetup,ActionOnFailure=CONTINUE,Jar=s3://us-east-1.elasticmapreduce/libs/script-runner/script-runner.jar,Args=["s3://awssupportdatasvcs.com/bootstrap-actions/EMRNotebooksSetup/emr-notebooks-setup.sh"]

Vous pouvez installer des noyaux et des bibliothèques à l'aide de pip ou de conda dans le répertoire /emr/notebook-env/bin du nœud primaire.

Exemple – Installation de bibliothèques Python

À partir du noyau Python3, exécutez la commande magique %pip directement depuis une cellule du bloc-notes pour installer les bibliothèques Python.

%pip install pmdarima

Vous devrez peut-être redémarrer le noyau pour utiliser les packages mis à jour. Vous pouvez également utiliser la commande magique de Spark %%sh pour invoquer pip.

%%sh /emr/notebook-env/bin/pip install -U matplotlib /emr/notebook-env/bin/pip install -U pmdarima

Lorsque vous utilisez un PySpark noyau, vous pouvez soit installer des bibliothèques sur le cluster à l'aide de pip commandes, soit utiliser des bibliothèques adaptées à un bloc-notes à partir d'un bloc-notes. PySpark

Pour exécuter pip des commandes sur le cluster depuis le terminal, connectez-vous d'abord au nœud principal en utilisantSSH, comme le montrent les commandes suivantes.

sudo pip3 install -U matplotlib sudo pip3 install -U pmdarima

Vous pouvez également utiliser des bibliothèques adaptées aux blocs-notes. Si vous utilisez des bibliothèques adaptées aux blocs-notes, l'installation de votre bibliothèque est limitée à l'étendue de votre session et s'effectue sur tous les exécuteurs Spark. Pour plus d'informations, consultez la rubrique relative à l'utilisation de bibliothèques adaptées aux blocs-notes.

Si vous souhaitez empaqueter plusieurs bibliothèques Python dans un PySpark noyau, vous pouvez également créer un environnement virtuel Python isolé. Pour des exemples, voir Utilisation Virtualenv.

Pour créer un environnement virtuel Python dans une session, utilisez la propriété Spark spark.yarn.dist.archives à partir de la commande magique %%configure dans la première cellule du bloc-notes, comme le montre l'exemple suivant.

%%configure -f { "conf": { "spark.yarn.appMasterEnv.PYSPARK_PYTHON":"./environment/bin/python", "spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON":"./environment/bin/python", "spark.yarn.dist.archives":"s3://amzn-s3-demo-bucket/prefix/my_pyspark_venv.tar.gz#environment", "spark.submit.deployMode":"cluster" } }

Vous pouvez également créer un environnement d'exécuteur Spark.

%%configure -f { "conf": { "spark.yarn.appMasterEnv.PYSPARK_PYTHON":"./environment/bin/python", "spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON":"./environment/bin/python", "spark.executorEnv.PYSPARK_PYTHON":"./environment/bin/python", "spark.yarn.dist.archives":"s3://amzn-s3-demo-bucket/prefix/my_pyspark_venv.tar.gz#environment", "spark.submit.deployMode":"cluster" } }

Vous pouvez également utiliser conda pour installer des bibliothèques Python. Vous n'avez pas besoin d'un accès sudo pour utiliser conda. Vous devez vous connecter au nœud principal avecSSH, puis exécuter conda depuis le terminal. Pour de plus amples informations, veuillez consulter Connectez-vous au nœud principal du EMR cluster Amazon à l'aide de SSH.

Exemple – Installation de noyaux

L'exemple suivant illustre l'installation du noyau Kotlin à l'aide d'une commande de terminal lorsque vous êtes connecté au nœud primaire d'un cluster :

sudo /emr/notebook-env/bin/conda install kotlin-jupyter-kernel -c jetbrains
Note

Ces instructions n'installent pas les dépendances du noyau. Si votre noyau comporte des dépendances tierces, vous devrez peut-être effectuer des étapes de configuration supplémentaires pour pouvoir utiliser le noyau avec votre bloc-notes.

Considérations et limites relatives aux bibliothèques adaptées aux blocs-notes

Lorsque vous utilisez des bibliothèques adaptées aux blocs-notes, tenez compte des éléments suivants :

  • Les bibliothèques adaptées aux ordinateurs portables sont disponibles pour les clusters que vous créez avec les EMR versions 5.26.0 et supérieures d'Amazon.

  • Les bibliothèques de type Notebook sont destinées à être utilisées uniquement avec le noyau. PySpark

  • Tout utilisateur peut installer des bibliothèques supplémentaires à portée de bloc-notes à partir d'une cellule de bloc-notes. Ces bibliothèques ne sont disponibles que pour cet utilisateur de bloc-notes au cours d'une seule session de bloc-notes. Si d'autres utilisateurs ont besoin des mêmes bibliothèques ou si le même utilisateur a besoin des mêmes bibliothèques dans une session différente, la bibliothèque doit être réinstallée.

  • Vous ne pouvez désinstaller que les bibliothèques installées avec le install_pypi_packageAPI. Vous ne pouvez désinstaller aucune bibliothèque qui a été installée sur le cluster.

  • Si les mêmes bibliothèques avec des versions différentes sont installées sur le cluster et en tant que bibliothèques limitées au bloc-notes, la version de la bibliothèque limitée aux bloc-notes remplace la version de la bibliothèque du cluster.

Travail avec des bibliothèques adaptées aux blocs-notes

Pour installer des bibliothèques, votre EMR cluster Amazon doit avoir accès au référentiel PyPI où se trouvent les bibliothèques.

Les exemples suivants illustrent des commandes simples permettant de répertorier, d'installer et de désinstaller des bibliothèques depuis une cellule d'un bloc-notes à l'aide PySpark du noyau etAPIs. Pour des exemples supplémentaires, consultez l'article Installer des bibliothèques Python sur un cluster en cours d'exécution avec EMR des blocs-notes sur le blog AWS Big Data.

Exemple – Liste des bibliothèques actuelles

La commande suivante répertorie les ensembles Python disponibles pour la session de bloc-notes Spark actuelle. Cette liste contient les bibliothèques installées sur le cluster et les bibliothèques limitées aux bloc-notes.

sc.list_packages()
Exemple – Installation de la bibliothèque Celery

La commande suivante installe la bibliothèque Celery en tant que bibliothèque limitée aux bloc-notes.

sc.install_pypi_package("celery")

Après avoir installé la bibliothèque, la commande suivante confirme qu’elle est disponible sur le pilote et les programmes d'exécution Spark.

import celery sc.range(1,10000,1,100).map(lambda x: celery.__version__).collect()
Exemple – Installation de la bibliothèque Arrow, spécification de la version et du référentiel

La commande suivante installe la bibliothèque Arrow en tant que bibliothèque adaptée à un ordinateur portable, avec une spécification de la version de la bibliothèque et du référentiel. URL

sc.install_pypi_package("arrow==0.14.0", "https://pypi.org/simple")
Exemple – Désinstallation d'une bibliothèque

La commande suivante désinstalle la bibliothèque Arrow, en la supprimant en tant que bibliothèque limitées aux bloc-notes de la session en cours.

sc.uninstall_package("arrow")