Comment résoudre les erreurs « Session '0' not found » (Session '0' introuvable) et « Error sending http request and maximum retry found » (Erreur d'envoi d'une requête http et nombre maximum de tentatives atteint) dans Amazon EMR ?

Dernière mise à jour : 02/03/2021

Je reçois l'une des erreurs suivantes lorsque j'exécute une application Apache Livy à l'aide d'un bloc-notes Jupyter sur Amazon EMR :

  • '404' à partir de xxxxxxxx avec charge utile d'erreur : « session '0' not found » (session '0' introuvable)
  • « The code failed because of a fatal error: Error sending http request and maximum retry encountered. » (Le code a échoué en raison d'une erreur irrécupérable : erreur d'envoi de la demande http et nombre maximum de tentatives atteint.)

Brève description

Ces erreurs se produisent généralement lorsque vous quittez la session de bloc-notes Jupyter en cours d'exécution. Elles persistent jusqu'à ce que cette session arrive à expiration. Pour résoudre ces erreurs, augmentez la valeur de la propriété livy.server.session.timeout dans /etc/livy/conf/livy.conf sur le nœud maître. Ensuite, redémarrez livy-server.

Résolution

Vous pouvez modifier livy.server.session.timeout sur un cluster Amazon EMR en cours d'exécution ou lors du lancement d'un nouveau cluster.

Sur un cluster en cours d'exécution

1.    Ouvrez /etc/livy/conf/livy.conf sur le nœud maître, puis modifiez la valeur livy.server.session.timeout (la valeur par défaut est 1h). Exemple :

sudo vim /etc/livy/conf/livy.conf
livy.server.session.timeout 2h

2.    Exécutez les commandes suivantes sur le nœud maître pour redémarrer livy-server :

Si vous utilisez la version 5.30.0 ou ultérieure d'Amazon EMR, ou la série Amazon EMR 6.x, basée sur Amazon Linux 2, exécutez les commandes suivantes :

sudo systemctl stop livy-server
sudo systemctl start livy-server

Si vous utilisez la version 5.29.0 ou antérieure d'Amazon EMR, exécutez les commandes suivantes :

sudo stop livy-server
sudo start livy-server

Votre cluster n'est pas disponible pendant le redémarrage de livy-server. Pour éviter les temps d'arrêt, configurez l'application Livy lorsque vous lancez un cluster Amazon EMR.

Sur un nouveau cluster

Ajoutez un objet de configuration similaire à celui ci-dessous lorsque vous lancez un cluster à l'aide d'Amazon EMR versions 4.6.0 et ultérieures. En plus de modifier livy.server.session.timeout, vous pouvez modifier les propriétés connexes suivantes, si vous le souhaitez :

  • livy.server.session.timeout-check : lorsqu'elle est activée, Livy arrête les sessions inactives qui atteignent le seuil d'expiration. Le paramètre par défaut est true.
  • livy.server.yarn.app-lookup timeout : durée pendant laquelle Livy recherche l'application YARN avant de la considérer comme perdue. Le paramètre par défaut est 60 secondes.
[
    {
        "Classification": "livy-conf",
        "Properties": {
            "livy.server.session.timeout-check": "true",
            "livy.server.session.timeout": "2h",
            "livy.server.yarn.app-lookup-timeout": "120s"
        }
    }
]

Veillez à fermer la session dans Jupyter ou Zeppelin lorsque vous avez terminé d'exécuter la tâche. Lorsque trop de sessions sont ouvertes, les nouvelles tâches ne peuvent pas démarrer tant que les ressources ne sont pas disponibles.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?