Dans le domaine des bases de données, l'espoir renaît éternellement ! Si l’on entend toujours parler d’entrepôts de données (des bases de données d'analyse rapide, généralement dotées d'un stockage en colonne in-memory) et d’outils qui améliorent l'étape ETL (extraction, transformation et chargement), il arrive aussi que l’on parle d'améliorations dans les lacs de données (qui stockent les données dans leur format natif) et dans la fédération de données (l’intégration de données à la demande de magasins de données hétérogènes). Notamment, on fait souvent référence à Presto en tant que solution rapide pour exécuter des requêtes SQL sur des données volumineuses résidant dans des fichiers de lacs de données. Ce moteur de requêtes open source SQL distribué permet d'exécuter des requêtes analytiques interactives sur des sources de données de tailles diverses. Presto permet d'interroger les données là où elles se trouvent, y compris dans Hive, Cassandra, les bases de données relationnelles et les magasins de données propriétaires. Une seule requête Presto peut combiner des données provenant de plusieurs sources. Facebook l’utilise pour effectuer des requêtes interactives vers plusieurs magasins de données internes, y compris son entrepôt de données de 300 pétaoctets.
Créée par Facebook, Uber, Twitter et Alibaba, la Fondation Presto supervise le développement du projet open source éponyme. Depuis, d’autres membres comme Alluxio, Ahana, Upsolver et Intel ont rejoint le projet. Ahana Cloud for Presto, testé ici, est un service géré qui simplifie Presto pour le cloud. Comme nous le verrons, Ahana Cloud for Presto fonctionne sur Amazon, possède une interface utilisateur assez simple et dispose d'une gestion du cycle de vie du cluster de bout en bout. Le service fonctionne dans Kubernetes et il est hautement évolutif. Il dispose d'un catalogue intégré et s’intègre facilement avec des sources de données, des catalogues et des outils de tableau de bord. Parmi les concurrents d'Ahana Cloud for Presto on trouve notamment Databricks Delta Lake, Qubole et BlazingSQL (voir la comparaison en fin d’article).
Dans son implementation sur AWS, Ahana Cloud for Presto place la console SaaS en dehors du VPC du client et les clusters Presto et le metastore Hive à l'intérieur du VPC du client. Les buckets Amazon S3 servent de stockage pour les fichiers de données. (Crédit : Ahana)
Architecture de Presto et de Ahana
Presto n'est pas une base de données relationnelle à usage général, mais plutôt un outil conçu pour interroger efficacement de grandes quantités de données à l'aide de requêtes SQL distribuées. Même s’il peut remplacer les outils capables d’interroger HDFS (Hadoop Distributed File System) via des pipelines de tâches MapReduce comme Hive ou Pig, Presto a été étendu pour fonctionner sur différents types de sources de données, y compris les bases de données relationnelles traditionnelles et d'autres sources de données comme Cassandra. En bref, Presto n'est pas conçu pour effectuer du traitement transactionnel en ligne (Online Transaction Processing, OLTP), mais pour le traitement analytique en ligne (Online Analytical Processing, OLAP), notamment l'analyse de données, l'agrégation de grandes quantités de données et la production de rapports. Presto peut interroger une grande variété de sources de données, des fichiers jusqu’aux bases de données, et renvoyer les résultats à un certain nombre d'environnements de Business Intelligence (BI) et d'analyse.
Le projet open source Presto a fonctionné sous les auspices de Facebook. Il a été inventé chez Facebook et le projet continue d'être développé à la fois par des développeurs internes à Facebook et par un certain nombre de développeurs tiers sous la supervision de la Fondation Presto. L'architecture en cluster évolutive de Presto utilise un coordonnateur pour l'analyse, la planification et la programmation du langage SQL, et un certain nombre de nœuds de travail pour l'exécution des requêtes. Les ensembles de résultats des Workers sont renvoyés au client par l'intermédiaire du coordonnateur de travail. Ahana Cloud regroupe un Presto managé, un catalogue de métadonnées Hive, un lac de données hébergé sur Amazon S3, la gestion des clusters et l'accès aux bases de données Amazon dans ce qui constitue un véritable entrepôt de données dans le cloud, dans une pile ouverte et désagrégée, comme le montre le schéma d'architecture ci-dessous. Le connecteur Presto Hive gère l'accès aux fichiers de données aux formats ORC (Optimized Row Columnar), Parquet, CSV et autres.
Le plan de contrôle de Ahana prend en charge l'orchestration des clusters, la journalisation, la sécurité et le contrôle d'accès, la facturation et le support. Les clusters Presto et le stockage se trouvent dans le VPC du client.
Quand on crée un cluster Presto dans Ahana, on choisit les types d'instance pour le coordonnateur, le metastore et les Workers, de même que le nombre initial de Workers (on peut augmenter ou diminuer ce nombre par la suite). Comme les ensembles de données utilisés pour ce test étaient relativement petits (quelques millions de lignes seulement), je n'ai pas pris la peine d'activer la nouvelle fonctionnalité de mise en cache des E/S d'Ahana Cloud. (Crédit : IDG)
Utilisation d'Ahana Cloud for Presto
Ahana offre une sorte de laboratoire pratique pour créer un cluster, le connecter à des sources dans Amazon S3 et Amazon RDS MySQL, et exercer Presto en utilisant SQL à partir d'Apache Superset, une plateforme moderne d'exploration et de visualisation de données. Nous n’avons pas vraiment utilisé la partie visualisation de Superset, car le but était d'examiner les performances de SQL en utilisant Presto.
Le volet Clusters de l'interface Ahana affiche les clusters actifs, en attente et inactifs. La console PrestoDB affiche l'état du cluster en cours d'exécution. (Crédit : IDG)
Le processus d'ajout de sources de données est un peu ennuyeux, car il oblige à modifier les chaînes URI et les chaînes de configuration JSON. C’eût été plus simple si les chaînes avaient été assemblées à partir de morceaux dans des zones de texte distinctes, surtout si les zones de texte étaient remplies automatiquement.
Intégrer Ahana Presto avec l'apprentissage machine et l'apprentissage profond
Comment font les utilisateurs pour intégrer Ahana Presto avec l'apprentissage machine et l'apprentissage profond ? En général, au lieu d'utiliser Superset comme client, ils utilisent un notebook Jupyter ou Zeppelin. Pour effectuer la requête SQL, ils utilisent un lien JDBC vers le moteur de requête Ahana Presto. Ensuite, l’output de la requête SQL remplit la structure ou le cadre de données approprié pour être utilisé pour l'apprentissage machine, en fonction du framework utilisé.
La création des catalogues et la conversion du format CSV au format ORC ont pris un peu moins d'une minute, pour 26,2 millions de lignes de classement de films. L'interrogation d'un fichier ORC est beaucoup plus rapide que celle d'un fichier CSV. Par exemple, le comptage du fichier ORC a pris 2,5 secondes, alors que le comptage du fichier CSV a pris 48,6 secondes. (Crédit : IDG)
Nouvelles fonctionnalités d'Ahana Cloud for Presto
La version d'Ahana Cloud testée ici intégrait les améliorations annoncées le 24 mars 2021, notamment des améliorations de performances, comme la mise en cache des E/S du lac de données et l'optimisation des requêtes, et des améliorations en termes de facilité d'utilisation, comme les mises à niveau automatisées et versionnées d'Ahana Compute Plane. Je ne les ai pas toutes utilisées moi-même. Par exemple, je n'ai pas activé la mise en cache des E/S du lac de données parce que la table du lac de données que j'utilisais était trop petite, et je n'ai pas passé assez de temps avec Ahana pour apprécier la mise à niveau de version.
Cette requête fédérée associe des évaluations de films au format ORC à des données de films dans une table de base de données MySQL pour créer une liste d'évaluations, de comptages et de popularité ventilée en déciles. Elle a pris 10 secondes. (Crédit : IDG)
Concurrents de Ahana Cloud for Presto
Globalement, Ahana Cloud for Presto est un bon moyen de transformer un lac de données Amazon S3 en véritable entrepôt de données, sans déplacer aucune donnée. Ahana Cloud évite d’avoir à effectuer une grande partie du travail de configuration et de paramétrage de Presto et d’Apache Superset. Les requêtes SQL s'exécutent rapidement sur Ahana Cloud for Presto, même quand elles sont envoyées à plusieurs sources de données hétérogènes. Databricks Delta Lake utilise des technologies différentes pour accomplir certaines des tâches réalisées par Ahana Cloud for Presto. Tous les fichiers de Databricks Delta Lake sont au format Apache Parquet, et Delta Lake utilise Apache Spark pour les requêtes SQL. Comme Ahana Cloud for Presto, Databricks Delta Lake peut accélérer les requêtes SQL grâce à un cache intégré. Delta Lake ne peut toutefois pas effectuer de requêtes fédérées.
Cette requête calcule les films les plus populaires dans la base de données fédérée avec une description où il est fait mention des armes, et elle indique également les budgets des films. Cette requête a pris 7,5 secondes. (Crédit : IDG)
Qubole, une plateforme de données native du cloud pour l'analyse et l'apprentissage machine, permet d’ingérer des ensembles de données à partir d'un lac de données, à construire des schémas avec Hive, à interroger les données avec Hive, Presto, Quantum et/ou Spark, et à poursuivre l’ingénierie et les data sciences sur les données. On peut utiliser Zeppelin ou les notebooks Jupyter, ainsi que les workflows Airflow. En outre, Qubole permet de gérer ses dépenses cloud indépendamment de la plateforme. Contrairement à Ahana, Qubole peut fonctionner sur AWS, Microsoft Azure, Google Cloud Platform et Oracle Cloud.
BlazingSQL offre une solution encore plus rapide pour exécuter des requêtes SQL, car il utilise les GPU Nvidia et exécute SQL sur des données chargées dans la mémoire du GPU. BlazingSQL permet de transférer des données brutes directement dans la mémoire du GPU sous forme de GPU DataFrames. Une fois que les GPU DataFrames se trouvent dans la mémoire du GPU, on peut utiliser RAPIDS cuML pour l'apprentissage machine, ou convertir les DataFrames en DLPack ou NVTabular pour l'apprentissage profond in-GPU avec PyTorch ou TensorFlow.
En conclusion, Ahana Cloud for Presto offre une alternative intéressante à ces concurrents. Il est plus facile à mettre en place et à maintenir qu'un déploiement Presto open source. Cela vaut certainement la peine de le tester gratuitement. En termes de tarif, Ahana Cloud for Presto coûte 0,25 dollar de l’heure en Crédit Ahana Cloud (ACC). (Voir le calculateur de prix et le tableau des frais d'instance). Par exemple, un cluster Presto 10 x r5.xlarge fonctionnant tous les jours ouvrables coûte 256 dollars/mois. Enfin, la plateforme fonctionne sur le service Amazon Elastic Kubernetes.
Commentaire