Partager via


Résolution de problèmes Apache Spark à l’aide d’Azure HDInsight

Découvrez les principaux problèmes rencontrés lors de l’utilisation de charges utiles Apache Spark dans Apache Ambari et leur résolution.

Comment configurer une application Apache Spark sur des clusters via Apache Ambari ?

Les valeurs de configuration Spark peuvent être paramétrées afin d’éviter l’exception OutofMemoryError de l’application Apache Spark. Les étapes suivantes montrent des valeurs de configuration Spark par défaut dans Azure HDInsight :

  1. Connectez-vous à Ambari sur https://CLUSTERNAME.azurehdidnsight.net avec les informations d’identification du cluster. L’écran initial affiche un tableau de bord de présentation. Il existe de légères différences de présentation entre HDInsight 4.0.

  2. Accédez à Spark2>Configs.

    Sélectionnez l'onglet Configurations .

  3. Dans la liste des configurations, sélectionnez et développez Custom-spark2-defaults.

  4. Recherchez le paramètre de valeur que vous avez besoin d’ajuster, par exemple spark.executor.memory. Dans le cas présent, la valeur de 9728m est trop élevée.

    Sélectionnez custom-spark-defaults.

  5. Définissez la valeur sur le paramètre recommandé. La valeur 2048m est recommandée pour ce paramètre.

  6. Enregistrez la valeur, puis la configuration. Cliquez sur Enregistrer.

    Remplacez la valeur par 2048m.

    Notez les modifications apportées à la configuration, puis sélectionnez Enregistrer.

    Saisissez une note concernant les modifications apportées.

    Si des configurations requièrent votre attention, un message s’affiche. Notez les éléments, puis sélectionnez Proceed Anyway (Continuer).

    Sélectionnez Proceed Anyway (Continuer).

  7. Chaque fois que vous enregistrez une configuration, vous êtes invité à redémarrer le service. Sélectionnez Redémarrer.

    Sélectionnez Redémarrer.

    Confirmez le redémarrage.

    Sélectionnez Confirmer le redémarrage.

    Vous pouvez examiner les processus en cours d’exécution.

    Examinez les processus en cours d’exécution.

  8. Vous pouvez ajouter des configurations. Dans la liste des configurations, sélectionnez Custom-spark2-defaults, puis Ajouter une propriété.

    Sélectionnez Ajouter une propriété.

  9. Définissez une nouvelle propriété. Vous pouvez définir une propriété unique via une boîte de dialogue de paramètres spécifiques tels que le type de données. Vous pouvez également définir plusieurs propriétés en utilisant une définition par ligne.

    Dans cet exemple, la propriété spark.driver.memory est définie avec une valeur de 4g.

    Définissez une nouvelle propriété.

  10. Enregistrez la configuration et redémarrez le service en suivant la procédure décrite aux étapes 6 et 7.

Ces modifications s’appliquent à l’ensemble du cluster, mais elles peuvent être remplacées au moment de l’envoi du travail Spark.

Comment configurer une application Apache Spark sur des clusters avec un notebook Jupyter ?

Dans la première cellule du notebook Jupyter, spécifiez, après la directive %%configure, les configurations Spark dans un format JSON valide. Modifiez les valeurs si nécessaire :

Ajoutez une configuration.

Comment configurer une application Apache Spark sur des clusters via Apache Livy ?

Soumettez la demande de l’application Spark à Livy à l’aide d’un client REST comme cURL. Utilisez une commande similaire à la suivante. Modifiez les valeurs si nécessaire :

curl -k --user 'username:password' -v -H 'Content-Type: application/json' -X POST -d '{ "file":"wasb://container@storageaccountname.blob.core.windows.net/example/jars/sparkapplication.jar", "className":"com.microsoft.spark.application", "numExecutors":4, "executorMemory":"4g", "executorCores":2, "driverMemory":"8g", "driverCores":4}'  

Comment configurer une application Apache Spark sur des clusters via spark-submit ?

Lancez spark-shell à l’aide d’une commande semblable à la suivante. Modifiez la valeur des configurations selon les besoins :

spark-submit --master yarn-cluster --class com.microsoft.spark.application --num-executors 4 --executor-memory 4g --executor-cores 2 --driver-memory 8g --driver-cores 4 /home/user/spark/sparkapplication.jar

Lecture supplémentaire

Apache Spark job submission on HDInsight clusters (Envoi de travaux Spark sur des clusters HDInsight)

Étapes suivantes

Si votre problème ne figure pas dans cet article ou si vous ne parvenez pas à le résoudre, utilisez un des canaux suivants pour obtenir de l’aide :