Le système de traitement distribué Lindorm (LDPS) exécute des jobs Spark sur des pools de ressources élastiques gérés par Kubernetes. Cette rubrique répertorie tous les paramètres configurables pour les jobs Spark LDPS et explique comment les transmettre selon la méthode de soumission utilisée.
Paramètres Spark
Paramètres restreints
Les paramètres suivants sont définis par le système et ne peuvent pas être personnalisés.
| Paramètre | Description |
|---|---|
spark.master |
Endpoint du système de gestion du cluster. |
spark.submit.deployMode |
Mode de déploiement du pilote Spark. |
Paramètres de ressource
LDPS s'exécute sur des pools de ressources élastiques facturés à l'utilisation. Par défaut, il n'y a aucune limite supérieure aux ressources qu'un job peut demander. Pour définir un maximum, consultez Modifier la configuration de LDPS.
Les paramètres de ressource s'appliquent à tous les jobs JDBC, JAR et Python soumis à LDPS. Ils sont divisés en paramètres de spécification et paramètres de capacité.
Paramètres de spécification
Paramètres de spécification de base
| Paramètre | Description | Par défaut |
|---|---|---|
spark.driver.memory |
Mémoire heap du pilote. Unité : mébioctets. | 8192m |
spark.driver.memoryOverhead |
Mémoire off-heap du pilote. Unité : mébioctets. | 8192m |
spark.kubernetes.driver.disk.size |
Taille du disque local du pilote. Unité : Go. | 50 |
spark.executor.cores |
Cœurs CPU par exécuteur. | 4 |
spark.executor.memory |
Mémoire heap par exécuteur. Unité : mébioctets. | 8192m |
spark.executor.memoryOverhead |
Mémoire off-heap par exécuteur. Unité : mébioctets. | 8192m |
spark.kubernetes.executor.disk.size |
Taille du disque local par exécuteur. Unité : Go. | 50 |
Paramètres de spécification avancés
| Paramètre | Description | Par défaut |
|---|---|---|
spark.{driver/executor}.resourceTag |
Ensemble prédéfini de spécifications de ressource. Lorsqu'il est défini, LDPS applique automatiquement les valeurs correspondantes de CPU, de mémoire et de disque. Valeurs valides : xlarge, 2xlarge, 4xlarge, 8xlarge, 16xlarge. |
Aucune |
spark.kubernetes.{driver/executor}.ecsModelPreference |
Modèles de nœuds de calcul préférés, listés par ordre de priorité. LDPS essaie chaque modèle séquentiellement ; si aucun n'est disponible, il sélectionne un modèle disponible correspondant à la spécification de ressource. Spécifiez jusqu'à quatre modèles, séparés par des virgules. Exemple : hfg6,g6. |
Aucune |
spark.kubernetes.{driver/executor}.annotation.k8s.aliyun.com/eci-use-specs |
Spécification GPU de l'instance Elastic Container Instance (ECI). Pour les types d'instances GPU pris en charge, consultez Spécifier les types d'instances ECS pour créer des pods. | ecs.gn7i-c8g1.2xlarge |
spark.{driver/executor}.resource.gpu.vendor |
Fournisseur GPU. Doit correspondre à la spécification GPU définie dans eci-use-specs. |
nvidia.com |
spark.{driver/executor}.resource.gpu.amount |
Nombre de GPU. Définissez sur 1. |
1 |
spark.{driver/executor}.resource.gpu.discoveryScript |
Chemin d'accès au script de détection GPU utilisé pour identifier et lier les ressources GPU au démarrage du pilote ou de l'exécuteur. Définissez sur /opt/spark/examples/src/main/scripts/getGpusResources.sh. |
/opt/spark/examples/src/main/scripts/getGpusResources.sh |
spark.kubernetes.executor.annotation.k8s.aliyun.com/eci-use-specs |
Spécification de l'instance exécuteur avec capacité de disque local étendue. Consultez les valeurs prises en charge ci-dessous. | Aucune |
Le paramètre spark.kubernetes.executor.annotation.k8s.aliyun.com/eci-use-specs prend en charge les spécifications d'exécuteur suivantes :
| Valeur | Cœurs CPU | Mémoire |
|---|---|---|
ecs.d1ne.2xlarge |
8 | 32 Go |
ecs.d1ne.4xlarge |
16 | 64 Go |
ecs.d1ne.6xlarge |
24 | 96 Go |
ecs.d1ne.8xlarge |
32 | 128 Go |
ecs.d1ne.14xlarge |
56 | 224 Go |
Lorsque vous utilisez spark.kubernetes.executor.annotation.k8s.aliyun.com/eci-use-specs, définissez également les deux paramètres suivants :
spark.kubernetes.executor.volumes.emptyDir.spark-local-dir-1.mount.path=/varspark.kubernetes.executor.volumes.emptyDir.spark-local-dir-1.options.medium=LocalRaid0Si le type d'instance exécuteur spécifié n'est pas disponible, contactez le support technique Lindorm (ID DingTalk : s0s3eg3).
Mappage des spécifications resourceTag
| Valeur resourceTag | **spark.{driver/executor}.cores** |
**spark.{driver/executor}.memory** |
**spark.{driver/executor}.memoryOverhead** |
**spark.kubernetes.{driver/executor}.disk.size** |
|---|---|---|---|---|
xlarge |
4 | 8192m | 8192m | 50 Go |
2xlarge |
8 | 16384m | 16384m | 100 Go |
4xlarge |
16 | 32768m | 32768m | 200 Go |
8xlarge |
32 | 65536m | 65536m | 400 Go |
16xlarge |
64 | 131072m | 131072m | 400 Go |
Paramètres de capacité
| Paramètre | Description | Par défaut |
|---|---|---|
spark.executor.instances |
Nombre d'exécuteurs alloués pour le job. | 2 |
spark.dynamicAllocation.enabled |
Active l'allocation dynamique des ressources. Lorsqu'elle est activée, LDPS demande et libère automatiquement des exécuteurs en fonction de la charge de travail du job en temps réel. Valeurs valides : true, false. |
true |
spark.dynamicAllocation.minExecutors |
Nombre minimum d'exécuteurs lorsque l'allocation dynamique des ressources est activée. | 0 |
spark.dynamicAllocation.maxExecutors |
Nombre maximum d'exécuteurs lorsque l'allocation dynamique des ressources est activée. Cette valeur équivaut au nombre de tâches concurrentes. | Infinity |
spark.dynamicAllocation.executorIdleTimeout |
Durée pendant laquelle un exécuteur inactif est conservé avant d'être libéré. Unité : secondes. | 600s |
Paramètres d'exécution
| Paramètre | Description | Par défaut |
|---|---|---|
spark.speculation |
Active l'exécution spéculative. Lorsqu'elle est activée, le pilote resoumet les tâches qui s'exécutent significativement plus lentement que les autres tâches de la même étape (queues longues), afin d'éviter les retards du job. Valeurs valides : true, false. |
true |
spark.task.maxFailures |
Nombre maximal d'échecs de tâche autorisés avant l'échec du job. | 4 |
spark.dfsLog.executor.enabled |
Stocke les journaux de l'exécuteur dans LindormDFS. Définissez sur false pour les jobs à grande échelle afin de réduire la charge DFS générée par les flux de journaux. Valeurs valides : true, false. |
true |
spark.jars |
Chemin d'accès au package JAR requis pour le job. Accepte les chemins OSS ou Hadoop Distributed File System (HDFS). Si vous utilisez JDBC, définissez ceci uniquement sur un chemin HDFS. Si vous utilisez un chemin OSS, configurez également les paramètres OSS ci-dessous. | Aucune |
spark.hadoop.fs.oss.endpoint |
Endpoint OSS. Pour les valeurs d'endpoint par région, consultez Régions et endpoints. | Aucune |
spark.hadoop.fs.oss.accessKeyId |
ID AccessKey de votre compte Alibaba Cloud ou utilisateur RAM. Consultez Obtenir une paire de clés AccessKey. | Aucune |
spark.hadoop.fs.oss.accessKeySecret |
Secret AccessKey de votre compte Alibaba Cloud ou utilisateur RAM. Consultez Obtenir une paire de clés AccessKey. | Aucune |
spark.hadoop.fs.oss.impl |
Classe d'implémentation du système de fichiers pour OSS. Définissez sur org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem. |
Aucune |
spark.default.parallelism |
Parallélisme par défaut pour les tâches non SQL, y compris les lectures de source de données et les étapes de shuffle. | Aucune |
spark.sql.shuffle.partitions |
Nombre de partitions de shuffle pour les tâches SQL. | 200 |
Paramètres de surveillance
| Paramètre | Description | Par défaut |
|---|---|---|
spark.monitor.cmd |
Commandes de surveillance à exécuter à intervalles réguliers. Séparez plusieurs commandes par des points-virgules (;). Les résultats sont écrits dans les journaux du job. Remarque
Ce paramètre ne peut pas être configuré lors de la soumission de jobs via Beeline ou JDBC. |
Aucune |
spark.monitor.interval |
Intervalle entre les exécutions des commandes de surveillance. Unité : secondes. | 60 |
spark.monitor.timeout |
Délai d'attente pour chaque commande de surveillance. Si une commande dépasse cette limite, elle est ignorée et la commande suivante s'exécute. Unité : secondes. | 2 |
Exemples de commandes de surveillance :
# Single command
"spark.monitor.cmd": "top -b -n 1"
# Multiple commands
"spark.monitor.cmd": "top -b -n 1; vmstat; free -m; iostat -d -x -c -k; df -h; sar -n DEV 1 1; netstat"
Commandes de surveillance courantes par catégorie :
| Catégorie | Commandes |
|---|---|
| État du système | top -b -n 1, vmstat |
| Mémoire | free -m |
| E/S disque | iostat -d -x -c -k |
| Utilisation du disque | df -h |
| Réseau | sar -n DEV 1 1, netstat |
Paramètres de journalisation
| Paramètre | Description | Par défaut |
|---|---|---|
spark.log.level |
Niveau de sortie des journaux pour le job. | INFO |
Valeurs valides pour spark.log.level, de la plus détaillée à la moins détaillée :
| Niveau | Description |
|---|---|
ALL |
Toutes les sorties de journal, y compris les informations de débogage les plus granulaires. |
TRACE |
Plus détaillé que DEBUG ; enregistre les étapes d'exécution fines. |
DEBUG |
Journaux de niveau débogage incluant l'état d'exécution détaillé. |
INFO |
Journaux informatifs généraux pour les événements d'exécution normaux. |
WARN |
Avertissements concernant des problèmes potentiels qui n'arrêtent pas l'exécution. |
ERROR |
Erreurs survenant pendant l'exécution. |
FATAL |
Erreurs critiques empêchant la poursuite du programme. |
OFF |
Désactive toutes les sorties de journal. |
Paramètres Spark open source
Pour les paramètres hérités de Spark open source, consultez Configuration Spark.
Configurer les paramètres par méthode de soumission
Lorsque vous soumettez un job à LDPS, la méthode utilisée détermine la façon dont les paramètres sont transmis.
Beeline
Modifiez conf/beeline.conf dans le répertoire du package Spark où se trouve l'outil de ligne de commande Beeline.
# LDPS endpoint
# Format: jdbc:hive2://<host>:<port>/;?token=<token>
endpoint=jdbc:hive2://ld-bp13ez23egd123****-proxy-ldps-pub.lindorm.aliyuncs.com:10009/;?token=jfjwi2453-fe39-cmkfe-afc9-01eek2j5****
# Connection credentials (default: root/root)
user=root
password=root
# Set to false to use a dedicated Spark session for this connection
shareResource=false
# Spark parameters
spark.dynamicAllocation.enabled=true
spark.dynamicAllocation.minExecutors=3
Pour la configuration complète de Beeline, consultez Prise en main.
JDBC
Ajoutez les paramètres Spark à la chaîne de connexion JDBC sous forme de paires clé-valeur après le jeton.
jdbc:hive2://<host>:<port>/;?token=<token>;spark.executor.memory=8g;spark.sql.shuffle.partitions=2
Pour le format complet de l'URL JDBC, consultez Utiliser JDBC dans le développement d'applications.
spark.jars ne peut pas être défini sur un chemin OSS lors de la soumission de jobs via JDBC. Utilisez plutôt un chemin HDFS.
Jobs JAR
Configurez les paramètres dans le modèle de job lors de la soumission d'un job Java :
Console Lindorm : configurez dans le modèle de contenu du job. Consultez Gérer les jobs dans la console Lindorm.
Data Management Service (DMS) : configurez dans la section Job configuration de la page du nœud de job. Consultez Utiliser DMS pour gérer les jobs.
Jobs Python
Configurez les paramètres dans le modèle de job lors de la soumission d'un job Python :
Console Lindorm : configurez dans le modèle de contenu du job. Consultez Gérer les jobs dans la console Lindorm.
Data Management Service (DMS) : configurez dans la section Job configuration de la page du nœud de job. Consultez Utiliser DMS pour gérer les jobs.