Passer au contenu

Comment résoudre les problèmes liés aux applications Spark qui ne s'exécutent pas dans mon bloc-notes Amazon EMR ?

Lecture de 4 minute(s)
0

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 :

  1. Ouvrez la console Amazon EMR.
  2. Dans la barre de navigation, choisissez Workspaces (blocs-notes).
  3. 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.
  4. Choisissez Noyau, puis sélectionnez Redémarrer le noyau.

Augmenter le délai d'expiration des sessions Spark pour JupyterLab

Procédez comme suit :

  1. Ouvrez la console Amazon EMR.

  2. Dans la barre de navigation, choisissez Workspaces (blocs-notes).

  3. 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.

  4. Ouvrez le terminal de bloc-notes.

  5. 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
  6. Ajoutez ou mettez à jour l'option livy_session_startup_timeout_seconds: ### dans le fichier config.json.

  7. 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 :

  1. Pour vérifier l'état du serveur Livy, exécutez la commande suivante :

    sudo systemctl status livy-server
  2. 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 :

  1. Utilisez SSH pour vous connecter à l’instance du nœud primaire.

  2. Ajoutez la propriété suivante au fichier /etc/livy/conf/livy-env.sh :

    export LIVY_SERVER_JAVA_OPTS="-Xmx8g" (option to your value)
  3. 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 :

  1. Utilisez SSH pour vous connecter au nœud primaire.

  2. Ajoutez le paramètre suivant au fichier /etc/livy/conf/livy.conf :

    livy.spark.deploy-mode  cluster
  3. Redémarrez le serveur Livy :

    sudo systemctl stop livy-server; sudo systemctl start livy-server
AWS OFFICIELA mis à jour il y a 6 mois