Partager via


Problèmes connus du cluster Apache Spark sur Azure HDInsight

Ce document fait le suivi de tous les problèmes connus pour la version Preview publique de HDInsight Spark.

Une session interactive a fuité d’Apache Livy

Lorsqu’Apache Livy est redémarré (à partir d’Apache Ambari ou à cause d’un redémarrage de la machine virtuelle du nœud principal 0) avec une session interactive encore active, une session de travail interactive fuite. Par conséquent, les nouveaux travaux peuvent être bloqués dans l’état Accepté.

Atténuation :

Pour contourner ce problème, suivez la procédure ci-dessous :

  1. SSH dans le nœud principal. Pour plus d’informations, consultez Utiliser SSH avec HDInsight.

  2. Exécutez la commande suivante pour rechercher l’ID d’application des tâches interactives démarrées via Livy.

    yarn application –list
    

    Par défaut, le nom attribué à une tâche est « Livy » si celle-ci a été démarrée avec une session interactive Livy, sans qu’un nom ait été explicitement spécifié. Pour la session Livy démarrée par Jupyter Notebook, le nom de la tâche commence par remotesparkmagics_*.

  3. Exécutez la commande suivante pour mettre fin à ces tâches.

    yarn application –kill <Application ID>
    

L’exécution des nouvelles tâches commence alors.

Serveur d’historique Spark non démarré

Le serveur d’historique Spark ne démarre pas automatiquement après la création d’un cluster.

Atténuation :

Démarrez manuellement le serveur d’historique à partir d’Ambari.

Problème d’autorisation dans le répertoire des journaux Spark

hdiuser obtient l’erreur suivante lors de l’envoi d’un travail à l’aide de spark-submit :

java.io.FileNotFoundException: /var/log/spark/sparkdriver_hdiuser.log (Permission denied)

Et aucun journal de pilotes n’est écrit.

Atténuation :

  1. Ajoutez hdiuser au groupe Hadoop.
  2. Fournissez les autorisations 777 sur /var/log/spark après la création du cluster.
  3. Mettez à jour l’emplacement du journal Spark à l’aide d’Ambari pour obtenir un répertoire avec les autorisations 777.
  4. Exécutez spark-submit en tant que sudo.

Le connecteur Spark-Phoenix n’est pas pris en charge.

Les clusters HDInsight Spark ne prennent pas en charge le connecteur Spark-Phoenix.

Atténuation :

Vous devez plutôt utiliser le connecteur Spark-HBase. Pour savoir comment procéder, consultez How to use Spark-HBase connector.

Voici certains problèmes connus liés aux notebooks Jupyter.

Notebooks avec des caractères non-ASCII dans les noms de fichiers

N’utilisez pas de caractères non-ASCII dans les noms de fichiers des notebooks Jupyter. Si vous essayez de charger un fichier via l’IU Jupyter, qui a un nom de fichier non-ASCII, le téléchargement échoue sans message d’erreur. Jupyter ne vous permet pas de charger le fichier, mais il ne lance pas d’erreur visible non plus.

Erreur lors du chargement de notebooks de taille supérieure

Vous pouvez obtenir une erreur Error loading notebook lorsque vous tentez de charger un bloc-notes de taille supérieure.

Atténuation :

Si vous obtenez cette erreur, cela ne signifie pas que vos données sont endommagées ou perdues. Vos blocs-notes sont toujours sur le disque, sous /var/lib/jupyteret vous pouvez exécuter SSH dans le cluster pour y accéder. Pour plus d’informations, consultez Utiliser SSH avec HDInsight.

Une fois connecté au cluster à l’aide de SSH, vous pouvez copier les blocs-notes depuis le cluster vers votre ordinateur local (à l’aide de SCP ou WinSCP) pour en faire une sauvegarde afin d’éviter la perte de toutes les données importantes dans le bloc-notes. Vous pouvez ensuite créer un tunnel SSH dans votre nœud principal sur le port 8001, afin d’accéder à Jupyter sans avoir à passer par la passerelle. À partir de là, vous pouvez effacer la sortie de votre bloc-notes et l’enregistrer de nouveau pour réduire au maximum la taille du bloc-notes.

Pour éviter cette erreur à l’avenir, gardez en tête les conseils suivants :

  • Il est important que la taille du bloc-notes reste réduite. Aucune sortie de vos travaux sous Spark qui est envoyée à Jupyter n’est conservée dans le bloc-notes. Pour Jupyter, la meilleure pratique consiste généralement à éviter l’exécution de l’élément .collect() sur des RDD ou trames de données larges. En revanche, si vous souhaitez lire le contenu d’un RDD, pensez à exécuter .take() ou .sample() afin que votre sortie ne devienne pas trop volumineuse.
  • En outre, lorsque vous enregistrez un bloc-notes, supprimez toutes les cellules de sortie pour réduire sa taille.

Démarrage du bloc-notes plus long que prévu

La première instruction de code du notebook Jupyter avec Spark Magic peut nécessiter plusieurs minutes.

Explication :

Cela se produit lorsque la première cellule du code est exécutée. En arrière-plan, la configuration de la session est lancée, et les contextes Spark, SQL et Hive sont définis. Une fois ces contextes définis, la première instruction est exécutée et donne l'impression que l'instruction prend beaucoup de temps.

Délai d’attente du notebook Jupyter lors de la création de la session

Quand le cluster Spark manque de ressources, les noyaux Spark et PySpark du notebook Jupyter expirent en essayant de créer la session.

Atténuations :

  1. Libérez certaines ressources de votre cluster Spark :

    • Arrêtez les autres blocs-notes Spark en allant dans le menu Fermer et Arrêter ou en cliquant sur Arrêter dans l’explorateur du bloc-notes.
    • Arrêtez les autres applications Spark à partir de YARN.
  2. Redémarrez le bloc-notes que vous tentiez de démarrer. Un nombre suffisant de ressources devrait désormais être disponible pour vous permettre de créer une session.

Voir aussi

Scénarios

Création et exécution d’applications

Outils et extensions

Gestion des ressources