Revenir au contenu principal

Spark Tuning

Essayer Gratuitement Databricks

Qu'est-ce que l'ajustement des performances Spark ?

L'ajustement des performances Spark consiste à modifier les paramètres de mémoire, de cœurs et d'instances utilisés par le système. Ce processus permet à Spark d'offrir des performances irréprochables et prévient la formation de goulets d'étranglement dans les ressources de Spark. Ajustement des performances de Spark

Qu'est-ce que la sérialisation des données ?

Pour réduire la consommation de mémoire, vous aurez peut-être à stocker les RDD Spark sous forme sérialisée. La sérialisation des données est également gage de bonnes performances réseau. Pour obtenir de bons résultats dans Spark :

  • Mettez fin aux jobs qui n'aboutissent pas.
  • Veillez à ce que les jobs soient réalisés sur un moteur d'exécution précis.
  • Utilisez toutes les ressources efficacement.
  • Améliorez les temps de performance du système

Spark prend en charge deux bibliothèques de sérialisation :

  • Sérialisation Java
  • Sérialisation Kryo

Qu'est-ce que l'ajustement de la mémoire ?

Trois aspects dominent l'ajustement de la consommation de la mémoire :

  • L'intégralité du dataset doit pouvoir être contenue dans la mémoire ; il est donc indispensable de tenir compte de la mémoire utilisée par vos objets.
  • En augmentant la rotation des objets, il devient indispensable de tenir compte de la collecte des déchets.
  • Et vous devez évaluer le coût de l'accès à ces objets.

Qu'est-ce que l'ajustement de la structure des données ?

Une option pour réduire la consommation de mémoire consiste à éviter les fonctionnalités Java les plus coûteuses. Il y a plusieurs manières de procéder :

  • Si la taille de la RAM est inférieure à 32 Go, le marqueur JVM doit être défini comme –xx:+ UseCompressedOops. Cette opération permet de créer un pointeur de quatre octets au lieu de huit.
  • Il est possible d'éviter les structures imbriquées en utilisant plusieurs petits objets en plus des pointeurs.
  • Au lieu d'employer des chaînes pour les clés, utilisez des identifiants numériques et des objets énumérés

Qu'est-ce que l'ajustement de la collecte des déchets ?

Pour éviter l'attrition importante associée aux RDD précédemment stockés par le programme, Java élimine les anciens objets pour faire de la place aux nouveaux. Il est toutefois possible d'utiliser des structures de données comprenant un nombre inférieur d'objets pour réduire considérablement les coûts. Pour prendre un exemple, pensez à un tableau d'entiers à la place d'une liste liée. Vous pouvez également utiliser des objets sous forme sérialisée, de façon à n'avoir qu'un seul objet pour chaque partition RDD.

Qu'est-ce que la gestion de la mémoire ?

De bonnes performances reposent avant tout sur une utilisation efficace de la mémoire. Spark utilise principalement la mémoire à des fins de stockage et d'exécution. La mémoire de stockage permet de mettre en cache des données qui seront réemployées par la suite. D'autre part, la mémoire d'exécution sert à effectuer des calculs pour les shuffles, les tris, les jointures et les agrégations. La contention de mémoire pose trois difficultés à Apache Spark :

  • Comment arbitrer la mémoire entre l'exécution et le stockage ?
  • Comment arbitrer la mémoire entre des tâches exécutées simultanément ?
  • Comment arbitrer la mémoire entre des opérateurs exécutés au sein de la même tâche ?

Au lieu d'éviter de réserver statiquement la mémoire à l'avance, vous pouvez gérer la contention de la mémoire lorsqu'elle se produit en forçant un déversement.

Ressources complémentaires

Retour au glossaire