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 ?

Date de la dernière mise à jour : 24/09/2019

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 :

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 également 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: le temps pendant lequel 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 ?

Cette page peut-elle être améliorée ?


Vous avez besoin d'aide ?