Revenir au contenu principal

Qu'est-ce que le tungstène ?

Le projet Tungsten optimise le moteur d'exécution de Spark grâce à une utilisation plus intelligente de la mémoire, des algorithmes prenant en compte le cache et la génération de code, pour des performances proches de celles d'un système nu.

10 Personas Artificial Intelligence

Summary

  • Découvrez comment Tungsten optimise l'efficacité de la mémoire et du processeur dans le moteur d'exécution de Spark afin d'exploiter au mieux les capacités du matériel moderne pour les applications Spark.
  • Découvrez les principales initiatives de Tungsten, notamment la gestion explicite de la mémoire, le calcul optimisé pour le cache, la génération de code et la réduction des appels de fonctions virtuelles.
  • Comprenez comment des techniques telles que le stockage des données intermédiaires dans les registres du processeur, le déroulement de boucles et la prise en charge SIMD permettent d'accélérer considérablement les charges de travail Spark SQL et DataFrame.

Qu’est-ce que le projet Tungsten ?

Tungsten est le nom de code d’un projet global visant à modifier le moteur d’exécution d’Apache Spark. Il a pour but d'améliorer considérablement l’efficacité de sa mémoire et de son unité centrale pour les applications Spark, en se rapprochant des performances des matériels les plus modernes.

UN LEADER 5X

Gartner® : Databricks, leader des bases de données cloud

Le projet Tungsten comprend les initiatives suivantes :

  • Gestion de la mémoire et traitement binaire : il s’agit de tirer parti de la sémantique des applications pour gérer efficacement la mémoire et éliminer l'overhead lié au modèle d’objet de la JVM et à la collecte des variables inutiles.
  • Calculs utilisant la mémoire cache : algorithmes et structures de données permettant d’exploiter la hiérarchie de la mémoire.
  • Génération de code : utiliser la génération de code pour exploiter les compilateurs et les processeurs modernes.
  • Suppression des distributions de fonctions virtuelles : cela réduit les appels multiples au processeur, ce qui peut avoir un impact important sur les performances lorsque les fonctions sont distribuées des milliards de fois.
  • Données intermédiaires dans la mémoire ou dans les registres du processeur : la phase 2 du projet Tungsten place les données intermédiaires dans les registres du processeur. Cela représente une réduction d’un ordre de grandeur du nombre de cycles nécessaires pour obtenir des données à partir des registres du processeur plutôt qu’à partir de la mémoire.
  • Déploiement de boucles et SIMD : optimiser le moteur d’exécution d’Apache Spark pour tirer parti des compilateurs modernes et de la capacité des processeurs à compiler et à exécuter efficacement de simples boucles for (contrairement aux graphes d’appels de fonctions complexes).

L’accent mis sur l’efficacité du processeur est dû au fait que les workloads Spark sont de plus en plus bloqués par l’utilisation du processeur et de la mémoire, plutôt que par les E/S (entrées/sorties) et la communication réseau. Cette tendance est illustrée par les recherches récentes sur les performances des workloads de Big Data.
 

Ressources complémentaires

Ne manquez jamais un article Databricks

Abonnez-vous à notre blog et recevez les derniers articles dans votre boîte mail.