Passer au contenu

Comment définir les paramètres de Spark dans Amazon EMR ?

Lecture de 4 minute(s)
0

Je souhaite configurer les paramètres d'Apache Spark dans Amazon EMR.

Brève description

Pour configurer les applications Spark, utilisez des arguments de ligne de commande tels que spark-submit. Vous pouvez également configurer les valeurs du fichier spark-defaults.conf afin que les modifications soient permanentes.

Résolution

Utiliser spark-submit pour configurer les paramètres de Spark

Pour charger des configurations de manière dynamique via le shell Spark et la commande spark-submit, utilisez l'une des options suivantes :

  • Options de ligne de commande, telles que --num-executors.
  • L'indicateur --conf.

Remarque : Pour voir la liste d’options complète, exécutez spark-submit--help.

La commande spark-submit lit les options de configuration à partir de spark-defaults.conf.

Dans le fichier spark-defaults.conf, chaque ligne inclut une clé et une valeur séparées par un espace blanc.

Pour plus d'informations, consultez la section Soumission d’applications utilisateur avec spark-submit. Pour plus d'informations sur les paramètres pris en charge par Spark, consultez la page Configuration de Spark sur le site Web d'Apache Spark.

Exemples d'options de configuration :

--class  \
--master  \
--deploy-mode  \
--conf = \
--num-executors  \
--executor-memory G \
--driver-memory G \
--executor-cores  \
--driver-cores  \
--jars  \
--packages  \
--py-files < Comma-separated list of .zip, .egg, or .py files to place on the PYTHONPATH for Python apps> \

La commande spark-submit transfère automatiquement le fichier JAR de l'application et tous les fichiers JAR inclus dans l'option --jars vers le cluster. Vous devez séparer les URL fournies après --jars par des virgules. spark-submit inclut la liste dans les chemins de classe de pilote et d'exécuteur, et copie les fichiers JAR et les fichiers dans le répertoire de travail pour chaque SparkContext sur les nœuds de l’exécuteur.

Remarque : Le développement du répertoire ne fonctionne pas avec --jars.

Exemple de commandespark-submit :

spark-submit \
    --deploy-mode cluster \
    --class org.apache.spark.examples.SparkPi \
    --conf spark.dynamicAllocation.enabled=false \
    --master yarn \
    --num-executors 4 \
    --driver-memory 4G \
    --executor-memory 4G \
    --executor-cores 1 \
    /usr/lib/spark/examples/jars/spark-examples.jar \
    10

Pour transmettre les paramètres de mémoire, utilisez l'indicateur --conf :

spark-submit \
    --deploy-mode cluster \
    --class org.apache.spark.examples.SparkPi \
    --conf spark.dynamicAllocation.enabled=false \
    --master yarn \
    --conf spark.driver.memory=1G \
    --conf spark.executor.memory=1G \
    /usr/lib/spark/examples/jars/spark-examples.jar \
    10

Utiliser des paramètres de Spark personnalisés pour lancer spark-shell et pyspark shell

Pour lancer spark-shell ou pyspark shell, exécutez les commandes suivantes :

spark-shell

spark-shell \
    --conf spark.driver.maxResultSize=1G \
    --conf spark.driver.memory=1G \
    --deploy-mode client \
    --conf spark.executor.memory=1G \
    --conf spark.executor.heartbeatInterval=10000000s \
    --conf spark.network.timeout=10000001s \
    --executor-cores 1 \
    --num-executors 5 \
    --packages org.apache.spark:spark-avro_2.12:3.1.2 \
    --conf 'spark.serializer=org.apache.spark.serializer.KryoSerializer'

pyspark shell

pyspark \
    --conf spark.driver.maxResultSize=1G \
    --conf spark.driver.memory=1G \
    --deploy-mode client \
    --conf spark.executor.memory=1G \
    --conf spark.executor.heartbeatInterval=10000000s \
    --conf spark.network.timeout=10000001s \
    --executor-cores 1 \
    --num-executors 5 \
    --packages org.apache.spark:spark-avro_2.12:3.1.2 \
    --conf 'spark.serializer=org.apache.spark.serializer.KryoSerializer'

Utiliser spark-defaults.conf pour configurer les paramètres de Spark

Pour rendre les modifications de configuration permanentes, ajoutez la configuration au fichier /etc/spark/conf/spark-defaults.conf. Puis, redémarrez le serveur d’historique Spark. L'exemple suivant configure la mémoire de l'exécuteur et la mémoire du pilote dans spark-defaults.conf. Dans cet exemple, chaque ligne est composée d'une clé et d'une valeur séparées par un espace blanc.

Exemple

spark.executor.memory 9486M
spark.driver.memory 9486M

L'exemple de configuration suivant configure le pilote Spark et la mémoire de l'exécuteur au lancement du cluster :

[
    {
        "Classification": "spark-defaults",
        "Properties": {
            "spark.executor.memory": "9486M",
            "spark.driver.memory": "9486M"
        }
    }
]

Remarque : Sur Amazon EMR, la valeur par défaut de la configuration spark.yarn.executor.memoryOverhead est de 18,75 %, mais la valeur par défaut standard de Spark est de 0,1875 %. Une fois que vous avez configuré votre tâche Spark, surveillez ses performances et analysez l'utilisation des ressources pour obtenir des informations et affiner les paramètres de votre tâche.

Informations connexes

Analyse des données ouvertes AWS

Ajouter une étape Spark

Modifier votre cluster à la volée grâce à la reconfiguration d'Amazon EMR

AWS OFFICIELA mis à jour il y a un mois