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

Lecture de 3 minute(s)
0

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

Brève description

Il existe deux méthodes pour configurer les applications Spark :

  • Utilisez des arguments de ligne de commande tels que la commande spark-submit pour éviter de coder des valeurs en dur.
  • Configurez les valeurs du fichier spark-defaults.conf pour rendre les modifications permanentes.

Solution

Configurer les paramètres Spark à l'aide de spark-submit

Le shell Spark et la commande spark-submit permettent de charger des configurations de manière dynamique de deux manières :

  • Utilisez les options de ligne de commande, telles que --num-executors.
  • Utilisez l'indicateur --conf.

Remarque : Exécutez spark-submit--help pour afficher la liste complète des options.

La commande spark-submit lit également les options de configuration depuis spark-defaults.conf. Dans le fichier spark-defaults.conf, chaque ligne se compose d'une clé et d'une valeur séparées par un espace.

Pour plus d'informations, consultez la section Soumission de candidatures utilisateur avec spark-submit.

Pour plus d'informations sur les paramètres pris en charge par Spark, consultez la section Configuration de Spark.

Voici quelques-unes des options de configuration les plus courantes :

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

Lorsque vous utilisez spark-submit, le fichier JAR de l'application et tous les fichiers JAR inclus avec l'option --jars sont automatiquement transférés vers le cluster. Les URL fournies après --jars doivent être séparées par des virgules. La liste est incluse dans les chemins des classes du pilote et de l'exécuteur et les fichiers JAR et les fichiers sont copiés dans le répertoire de travail pour chaque SparkContext sur les nœuds de l'exécuteur. Gardez à l'esprit que l'extension de répertoires ne fonctionne pas avec --jars.

Exemple

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

Vous pouvez transmettre les paramètres de mémoire à l'aide de l'indicateur --conf, comme indiqué dans l'exemple suivant :

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

Lancez spark-shell et pyspark shell à l'aide de paramètres Spark personnalisés

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'

Configurer les paramètres Spark à l'aide de spark-defaults.conf

Pour rendre les modifications de configuration permanentes, ajoutez la configuration au fichier /etc/spark/conf/spark-defaults.conf. Redémarrez ensuite le serveur Spark History. 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 des espaces blancs.

Exemple

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

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

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

Informations connexes

Bonnes pratiques de gestion de la mémoire pour les applications Apache Spark sur Amazon EMR

Ajouter une étape Spark

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

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an