Configuration et administration de JupyterHub - Amazon EMR

Configuration et administration de JupyterHub

JupyterHub et ses composants connexes s'exécutent dans un conteneur Docker nommé jupyterhub, qui exécute le système d'exploitation Ubuntu. Il existe plusieurs méthodes pour administrer des composants s'exécutant à l'intérieur du conteneur.

Avertissement

Les personnalisations que vous effectuez dans le conteneur peuvent ne pas être conservées si le conteneur redémarre. Nous vous recommandons de créer des scripts ou d'automatiser de quelque manière que ce soit les configurations de conteneur, de sorte que vous puissiez reproduire les personnalisations plus rapidement.

Administration à l'aide de la ligne de commande

Une fois connecté au nœud principal à l'aide de SSH, vous pouvez émettre des commandes en utilisant l'interface de ligne de commande Docker et en spécifiant le conteneur par l'intermédiaire de son nom (jupyterhub) ou de son ID. Par exemple, sudo docker exec jupyterhub command exécute des commandes reconnues par le système d'exploitation ou par une application exécutée dans le conteneur. Vous pouvez utiliser cette méthode pour ajouter des utilisateurs au système d'exploitation et installer des applications et des bibliothèques supplémentaires au sein du conteneur Docker. Par exemple, l'image de conteneur par défaut inclut Conda pour l'installation de package ; vous pouvez donc exécuter la commande suivante sur la ligne de commande du nœud principal pour installer une application, Keras, dans le conteneur :

sudo docker exec jupyterhub conda install keras

Administration par soumission d'étapes

Les étapes constituent un moyen de soumettre le travail à un cluster. Vous pouvez soumettre des étapes lors du lancement d'un cluster ou lorsque celui-ci est en cours d'exécution. Les commandes exécutées sur la ligne de commande peuvent être soumises sous forme d'étapes à l'aide de command-runner.jar. Pour plus d'informations, consultez Utilisation des étapes à l'aide de la CLI et de la console dans le Guide de gestion d'Amazon EMR et Exécuter des commandes et des scripts sur un cluster Amazon EMR.

Par exemple, vous pouvez utiliser la commande de l'AWS CLI suivante sur un ordinateur local pour installer Keras, comme vous l'avez fait à partir de la ligne de commande du nœud principal dans l'exemple précédent :

aws emr add-steps --cluster-id MyClusterID --steps Name="Command Runner",Jar="command-runner.jar",Args="/usr/bin/sudo","/usr/bin/docker","exec","jupyterhub","conda","install","keras"

De plus, vous pouvez créer un script avec une séquence d'étapes, le charger dans Amazon S3, puis utiliser script-runner.jar pour l'exécuter lors de la création du cluster ou l'ajouter en tant qu'étape. Pour de plus amples informations, veuillez consulter Exécuter des commandes et des scripts sur un cluster Amazon EMR. Pour voir un exemple, consultez Exemple : script bash pour ajouter plusieurs utilisateurs.

Administration à l'aide des API REST

Jupyter, JupyterHub et le proxy HTTP pour JupyterHub fournissent des API REST que vous pouvez utiliser pour envoyer des demandes. Pour envoyer des demandes à JupyterHub, vous devez transmettre un jeton d'API avec la demande. Vous pouvez utiliser la commande curl à partir de l'interface de ligne de commande du nœud principal pour exécuter des commandes REST. Pour plus d'informations, consultez les ressources suivantes :

L'exemple suivant illustre l'utilisation de l'API REST pour JupyterHub pour obtenir la liste des utilisateurs. La commande transmet un jeton admin généré précédemment et utilise le port par défaut 9443 pour JupyterHub, en recueillant la sortie vers jq pour faciliter l'affichage :

curl -XGET -s -k https://$HOST:9443/hub/api/users \ -H "Authorization: token $admin_token" | jq .