Je souhaite résoudre les problèmes liés aux applications Apache Spark qui ne s'exécutent pas dans mon bloc-notes Amazon EMR.
Brève description
Le lancement des applications Spark qui s'exécutent dans un bloc-notes Amazon EMR peut échouer avec l'erreur suivante :
« The code failed because of a fatal error: Session 4 did not start up in 60 seconds. »
Résolution
Vérifier les ressources du cluster
Assurez-vous que Spark dispose de suffisamment de ressources disponibles dans le cluster pour que Jupyter puisse créer un contexte Spark. Pour vérifier les ressources disponibles, utilisez les métriques Amazon CloudWatch ou le Gestionnaire de ressources.
S’assurer que les bibliothèques Sparkmagic sont correctement configurées
Contactez votre administrateur Jupyter pour vous assurer que les bibliothèques Sparkmagic sont correctement configurées.
Redémarrer le noyau de bloc-notes
Procédez comme suit :
- Ouvrez la console Amazon EMR.
- Dans la barre de navigation, choisissez Workspaces (blocs-notes).
- Sélectionnez l'espace de travail dans la liste Workspaces (blocs-notes), puis choisissez Lancement rapide. Ou bien choisissez l'espace de travail dans la liste et sélectionnez Associer, puis choisissez Lancer dans JupyterLab ou Lancer dans Jupyter.
- Choisissez Noyau, puis sélectionnez Redémarrer le noyau.
Augmenter le délai d'expiration des sessions Spark pour JupyterLab
Procédez comme suit :
-
Ouvrez la console Amazon EMR.
-
Dans la barre de navigation, choisissez Workspaces (blocs-notes).
-
Sélectionnez l'espace de travail dans la liste Workspaces (blocs-notes), puis choisissez Lancement rapide. Un nouvel onglet de navigateur s'ouvre dans l'éditeur JupyterLab.
-
Ouvrez le terminal de bloc-notes.
-
Exécutez la commande suivante pour ouvrir le fichier config.json :
vi /home/notebook/.sparkmagic/config.json
Remarque : si vous avez installé l'application JupyterHub dans l'instance principale d'Amazon EMR, exécutez la commande suivante :
vi /etc/jupyter/conf/config.json
-
Ajoutez ou mettez à jour l'option livy_session_startup_timeout_seconds: ### dans le fichier config.json.
-
Redémarrez tous les noyaux.
Remarque : si vous avez installé l'application JupyterHub dans l'instance principale d'Amazon EMR, redémarrez le conteneur JupyterHub.
Régler la mémoire du pilote Spark
Modifiez la mémoire du pilote Spark utilisée par l'application Jupyter Notebook pour contrôler l'allocation des ressources. Pour plus d'informations, consultez la section Comment modifier la configuration de Spark dans mon Workspace Amazon EMR Studio ?
S’assurer que le service Livy se trouve dans un état sain
Vérifier l'état du serveur Livy qui s'exécute sur l'instance du nœud principal
Procédez comme suit :
-
Pour vérifier l'état du serveur Livy, exécutez la commande suivante :
sudo systemctl status livy-server
-
Si l'état du serveur est en panne, exécutez la commande suivante pour redémarrer le serveur Livy :
sudo systemctl start livy-server
Augmenter la mémoire du serveur Livy
Par défaut, le client du bloc-notes tente de se connecter au serveur Apache Livy pendant 90 secondes. Si le serveur Livy ne répond pas dans les 90 secondes, le client génère un délai d'attente. La raison la plus courante pour laquelle le serveur Livy ne répond pas est le manque de ressources. Pour résoudre ce problème, augmentez la mémoire du serveur Livy.
Procédez comme suit :
-
Utilisez SSH pour vous connecter à l’instance du nœud primaire.
-
Ajoutez la propriété suivante au fichier /etc/livy/conf/livy-env.sh :
export LIVY_SERVER_JAVA_OPTS="-Xmx8g" (option to your value)
-
Redémarrez le serveur Livy.
sudo systemctl stop livy-server; sudo systemctl start livy-server
Utiliser le mode cluster au lieu du mode client dans Livy
Lorsque vous soumettez des applications Spark sur le bloc-notes en mode client, le pilote Spark s'exécute en tant que sous-processus du serveur Livy. Si vous exécutez un sous-processus, vous pouvez être confronté à un manque de ressources sur le nœud primaire. Pour éviter les pannes de Livy causées par des ressources insuffisantes, passez du mode de déploiement au mode cluster. Lorsque vous exécutez des applications Spark en mode cluster, le pilote s'exécute sur les nœuds primaires et de tâches, au lieu du nœud primaire.
Procédez comme suit :
-
Utilisez SSH pour vous connecter au nœud primaire.
-
Ajoutez le paramètre suivant au fichier /etc/livy/conf/livy.conf :
livy.spark.deploy-mode cluster
-
Redémarrez le serveur Livy :
sudo systemctl stop livy-server; sudo systemctl start livy-server