Baidu BigSQL : des requêtes interactives Spark plus rapides

Baidu a déployé la mémoire persistante Intel® Optane™ pour optimiser son service de requêtes ad hoc, réduire le coût total de possession (TCO) et maintenir les performances.

En bref :

  • La plateforme de traitement de données BigSQL de Baidu s'appuie sur Spark SQL et possède de nombreuses caractéristiques et améliorations de performance qui la perfectionnent.

  • Baidu a déployé la mémoire persistante Intel® Optane™ non seulement pour optimiser Tuling, son service de requêtes ad hoc, mais également pour réduire le TCO et assurer des performances satisfaisantes. Grâce à la mémoire persistante Intel Optane, le cluster a déchargé plus de 30 % de la charge de travail de Tuling1. De plus, la latence moyenne d'une requête a diminué de 20 %1.

author-image

Par

Ces dernières années, le volume mondial de données a connu une croissance presque exponentielle. Les entreprises, en particulier les entreprises technologiques, sont ainsi confrontées à des défis plus grands pour répondre aux exigences en matière de temps de service. Apache Spark, un moteur analytique unifié pour le traitement de données à grande échelle et hautes performances, est conçu pour relever ce défi. Un module d'Apache Spark - Spark SQL est largement utilisé pour travailler avec des données structurées dans les grands centres de données. La plateforme de traitement de données BigSQL de Baidu s'appuie sur Spark SQL et possède de nombreuses caractéristiques et améliorations de performance qui la perfectionnent

Pour que Baidu Big SQL puisse fournir aux utilisateurs des services de requête ad hoc très performants, une mémoire de grande capacité est nécessaire pour mettre en cache les données chaudes localement sur des nœuds de calcul afin d'éviter que les E/S DFS ne ralentissent les performances. Grâce à la mémoire persistante Intel Optane, nous avons réussi à garantir des performances de cache exceptionnelles, tout en améliorant considérablement le traitement du cluster et en obtenant des avantages significatifs en termes de TCO » - LI Shiyong, Senior System Engineer, Baidu

Une amélioration importante concerne le respect d'un délai de réponse de moins d'une seconde pour les requêtes interactives. À cette occasion, Intel et Baidu ont collaboré à la création du projet Optimized Analytics Package (OAP) pour la plateforme Spark. Le projet OAP est conçu pour exploiter le format de données en colonnes et les index définis par l'utilisateur construits sur des colonnes sélectionnées, ce qui permet d'améliorer l'efficacité de la numérisation des données. Il adopte également une stratégie affinée de mise en cache de données en mémoire afin d'éliminer les goulots d'étranglement des E/S sur les disques et les réseaux, maximisant ainsi les performances à moins d'une seconde.

Les données chaudes augmentent rapidement à mesure que les activités de Baidu se développent. Il est nécessaire de mettre la mémoire à l'échelle pour offrir le niveau de performance exigé par les utilisateurs. Cependant, le coût élevé de la mémoire vive dynamique (DRAM) ajoute une pression croissante sur le coût total de possession (TCO). La collaboration de Baidu et Intel a débouché sur une solution plus économique pour remplacer la DRAM, qui permet de réduire le TCO tout en assurant des performances satisfaisantes : la mémoire persistante Intel® Optane™.

Les tests internes de Baidu ont démontré que la mémoire persistante Intel Optane améliore les performances du cache OAP et le rendement par dollar par rapport aux solutions qui ne sont pas équipées de cette mémoire. Il en résulte des impacts directs sur l'entreprise, tels que l'optimisation de son service de requêtes ad hoc, Tuling, en déchargeant sa charge de travail et en réduisant la latence moyenne des requêtes.

Baidu BigSQL avec OAP

Une caractéristique fondamentale de Spark SQL réside dans le fait qu'il est conçu pour optimiser les performances du traitement par lots. Cependant, certaines requêtes de service de Baidu possèdent des caractéristiques totalement différentes. Elles sont appelées requêtes interactives. Généralement, elles interrogent un grand ensemble de données avec des conditions de filtrage spécifiques, dans le but précis d'identifier une quantité relativement faible de données. Les utilisateurs s'attendent à ce que cette petite quantité de données interrogées leur soit renvoyée en quelques secondes, voire en moins d'une seconde, et non en plusieurs minutes ou heures comme c'est généralement le cas avec le traitement par lots. Cela n'est généralement pas possible avec la version actuelle de Spark SQL.

Afin de résoudre ce problème, Baidu et Intel ont collaboré et mis en œuvre OAP, qui utilise des techniques d'indexation et de mise en cache pour accélérer la réponse interactive aux requêtes. En intégrant OAP, Baidu BigSQL a réussi à atteindre le niveau de performance souhaité en matière de requêtes interactives.

Figure 1. Intégration de Baidu BigSQL et OAP.

Lorsqu'une requête présente des conditions de filtrage spécifiques, des index peuvent être créés sur les colonnes présentant de telles conditions. OAP crée et stocke un index B+ complet de type arbre à côté du fichier de données en colonnes pour identifier les lignes cibles grâce à une recherche rapide dans l'index B+ de type arbre, évitant ainsi les analyses de données inutiles passant par le stockage dorsal comme le HDFS. En outre, le fichier d'index est séparé du fichier de données original. Cela permet de créer ou de supprimer des index sans avoir à réécrire les fichiers de données originaux.

Figure 2. Le concept de cache et d'index OAP.

OAP optimise l'accès aux index et aux données grâce au cache. Cela permet de réduire davantage le temps de réponse aux requêtes, qui passe de quelques secondes à moins d'une seconde. Le chargement de l'index et l'analyse des données sont plus rapides en mettant l'index et les données en mémoire cache, ce qui évite les surcharges d'E/S sur les disques et les réseaux lors de la lecture à partir de systèmes de fichiers distribués. De plus, l'index et les données peuvent être configurés avec des caches séparés, ce qui permet une expulsion indépendante et une gestion de l'espace mémoire pour les deux.

En outre, maintenant que le cache se trouve au niveau des colonnes, il est possible de mettre en cache les colonnes exclusivement nécessaires à la requête. Et selon la politique du moins récemment utilisé (LRU), si la capacité maximale est atteinte, ces derniers éléments de données moins récemment utilisés seront expulsés du cache afin de pouvoir mettre en cache des éléments de données plus récents. Guidé par cette politique, un gestionnaire de cache avancé est mis en œuvre dans Baidu BigSQL pour remplir de manière proactive les colonnes chaudes et retirer les colonnes qui ne sont plus nécessaires dans le cache.

Optimisation de Baidu BigSQL grâce à la mémoire persistante Intel® Optane™

Lorsque l'échelle des données est petite, Baidu BigSQL met l'index ou les données en cache dans la DRAM pour fournir des performances optimales. Cependant, la taille des ensembles de données évolue rapidement à mesure que les activités de Baidu continuent à se développer. Les performances diminuent si l’espace dans le cache n’est pas suffisant pour accueillir une grande quantité de données chaudes.

La solution la plus simple consiste à ajouter plus de DRAM, mais elle présente plusieurs inconvénients. Premièrement, le prix par Go est élevé, ce qui exerce une grande pression sur le TCO. Deuxièmement, la mémoire est une ressource précieuse pour le calcul, surtout dans l'environnement Spark où la capacité totale de DRAM pouvant être configurée sur chaque nœud est limitée. Troisièmement, même si la DRAM a une bande passante à accès aléatoire plus élevée et une latence plus faible, ces avantages seront perdus lorsqu'elle servira à mettre de gros blocs de données en cache et à caractériser l'accès séquentiel. Baidu et Intel ont collaboré pour intégrer la mémoire persistante Intel Optane et trouver des alternatives plus rentables.

La mémoire persistante Intel Optane est une technologie innovante qui offre une combinaison unique et abordable de grande capacité de mémoire et de persistance. Elle représente une nouvelle catégorie de technologie de mémoire et de stockage, explicitement conçue pour les centres de données. Elle offre plusieurs avantages clés qui correspondent aux exigences spécifiques de Baidu BigSQL :

  • Bande passante élevée pour la lecture séquentielle
  • Grande capacité et coût abordable

La mémoire persistante Intel Optane prend en charge deux modes de fonctionnement. Lorsqu'elles sont configurées en mode mémoire, les applications perçoivent un ensemble de mémoire volatile de la même manière que sur les systèmes uniquement constitués de DRAM. Dans le cas d'une configuration en mode App Direct, l'application peut indiquer comment utiliser l'espace disponible. Puisque le cache OAP a pour but spécifique d'indexer et de saisir des données, le mode App Direct sert à garantir que l'application contrôle entièrement l'utilisation de l'appareil. En outre, le cache peut être reconstitué à partir du stockage en arrière-plan et n'a pas besoin d'être persistant. OAP utilise la bibliothèque memkind pour accéder à la mémoire persistante sans persistance et sans les pénalités de performance correspondantes.

Pour utiliser la mémoire persistante à la place de la DRAM, Intel a étendu OAP pour permettre l'utilisation de plugins de gestion de la mémoire et a mis en place un gestionnaire de mémoire basé sur la mémoire persistante pour permettre l'allocation d'espace de cache dans cette dernière. Les utilisateurs peuvent alterner entre DRAM et mémoire persistante, ou même mélanger les deux, par exemple en utilisant la DRAM pour mettre l'index en cache et la mémoire persistante pour mettre les données en cache.

Baidu et Intel ont également mené d'autres collaborations de grande envergure dans des domaines tels que le matériel, le système d'exploitation et les bibliothèques, afin d'intégrer pleinement la mémoire persistante à l'environnement du système d'exploitation spécifique de Baidu.

Baidu a mené plusieurs évaluations et tests internes pour valider les performances et les avantages de la mémoire persistante Intel Optane dans OAP, tout d'abord avec des requêtes de banc d'essai d'aide à la décision, puis avec des requêtes de charge de travail réelle de Baidu. L'objectif principal était de tester et de comprendre la rentabilité de la mémoire persistante.

Dans le cas de tests avec des requêtes de référence d'aide à la décision, la taille de l'ensemble de données est d'abord plafonnée à 1 To. La DRAM et la mémoire persistante sont configurées à la même capacité. Les résultats des tests montrent qu'elles sont toutes deux capables de mettre en cache toutes les données. De plus, la mémoire persistante est à peine moins performante que la DRAM (11,7 %), alors que son coût est bien inférieur2. Lorsque l'ensemble de données atteint 3 To et que la DRAM et la mémoire persistante sont au même coût, la DRAM ne peut plus mettre en cache toutes les données en raison de sa capacité inférieure. En comparaison, la mémoire persistante n'a pas seulement une plus grande capacité de mise en cache de toutes les données, elle montre une bien meilleure performance (6 fois meilleure)2. Dans le second scénario, les performances de la DRAM sont médiocres, car lorsque la taille des données dépasse largement la taille du cache, elle doit fréquemment lire les données du stockage en arrière-plan, ce qui retarde le temps de réponse. Les tests de requête de référence d'aide à la décision montrent clairement que, pour un même niveau de coût, la mémoire persistante Intel Optane offre une capacité et des performances supérieures à celles de la DRAM.

Figure 3. Tests comparatifs entre DRAM et mémoire persistante Intel Optane2 Décision.

La prochaine étape des tests se base sur les deux mêmes scénarios, mais avec la charge de travail réelle de Baidu et une approche légèrement différente. Dans le premier scénario, la DRAM et la mémoire persistante sont toutes deux testées pour mettre en cache 50 % des colonnes fréquemment utilisées. Les résultats montrent que la vitesse de mise en cache de la mémoire persistante n'est qu'environ 12 % inférieure à celle de la DRAM2. Et son coût étant disproportionnellement inférieur, c'est la solution la plus rentable. Dans le second scénario (DRAM et mémoire persistante au même coût), seule la mémoire persistante a la capacité de mettre en cache toutes les colonnes de données chaudes. Elle démontre également une amélioration des performances de 22 % tout en évitant 30 % des requêtes d'E/S vers les systèmes sous-jacents2.

Sur la base des résultats de ces tests, Baidu a conclu que la mémoire persistante Intel Optane est une solution de cache plus économique qui peut remplacer la DRAM dans BigSQL. Depuis, Baidu a déployé la mémoire persistante dans BigSQL et l'a utilisée pour optimiser son service de requêtes ad hoc : Tuling. Grâce à la mémoire persistante Intel Optane, le cluster a déchargé plus de 30 % de la charge de travail de Tuling1. De plus, la latence moyenne des requêtes a diminué de 20 % après le déploiement de la mémoire persistante1. La performance de Spark/OAP par instance de serveur avec mémoire persistante s'est améliorée de 50 % par rapport à la charge de travail de Tuling Spark SQL, pour un coût supplémentaire de seulement 20 %1.

Perspectives

Les tendances émergentes poussent les technologies de big data à changer et à évoluer. L'objectif est de passer de la fourniture de fonctionnalités clés à des solutions basées sur le Cloud, avec des optimisations approfondies pour atteindre les objectifs de performance et réduire les coûts. Une fois le système BigSQL de Baidu basé sur le Cloud, la mémoire persistante Intel Optane lui apportera des avantages plus significatifs en termes de performances et de TCO.

Et au delà d'accélérer le cache des données d'entrée pour Spark SQL, la grande capacité et la large bande passante de la mémoire persistante jouent un rôle encore plus important dans les scénarios d'apprentissage en profondeur et d'apprentissage automatique (machine learning et deep learning) basés sur Spark, ceux-ci nécessitant de nombreuses itérations de calcul afin de traiter de très grands volumes de données. De plus, Spark shuffle peut être optimisé pour accéder à la mémoire persistante via RDMA et l'utiliser comme stockage shuffle, ce qui réduit encore la latence du shuffle et améliore les performances.

À l'avenir, Baidu et Intel continueront à collaborer pour optimiser Spark. Baidu et Intel exploiteront les avancées de la mémoire persistante Intel Optane et des processeurs Intel® Xeon® Scalable de 2ᵉ génération pour introduire davantage de fonctions d'accélération dans Spark, poussant ainsi les performances et la rentabilité au niveau supérieur.

Télécharger le PDF ›