Dans le domaine de l'ingénierie des données moderne, la vitesse n'est pas un luxe, mais une exigence. À mesure que les organisations accumulent des pétaoctets de données à travers des silos disparates — S3, HDFS, Cassandra, Elasticsearch — le besoin d'une couche de requête unifiée et haute performance devient critique. Voici Presto (maintenant divisé en PrestoSQL et Trino), un moteur de requête SQL distribué conçu pour exécuter des requêtes analytiques interactives sur des sources de données de toutes tailles, de quelques gigaoctets à des exaoctets.
Contrairement aux frameworks de traitement par lots traditionnels comme Hadoop MapReduce ou Spark, qui sont optimisés pour le débit plutôt que pour la latence, Presto est conçu pour l'analyse interactive à faible latence. Cela en fait le choix idéal pour les équipes de données qui doivent répondre à des questions ad hoc complexes en quelques secondes plutôt qu'en minutes ou en heures.
Comprendre l'architecture : Maître et Workers
La puissance de Presto réside dans son architecture client-serveur. Il ne s'agit pas d'une base de données en soi, mais d'un moteur de requête qui se connecte à diverses sources de données via des Connectors (connecteurs). L'architecture se compose de deux composants principaux :
- Le Coordinateur (Maître) : Ce nœud accepte les connexions des clients, analyse et interprète les requêtes SQL, crée des plans d'exécution et attribue des tâches aux nœuds workers. Il est le cerveau de l'opération.
- Les Nœuds Workers : Ces nœuds exécutent les tâches assignées par le coordinateur. Ils effectuent le traitement réel des données, y compris le filtrage, l'agrégation et le jointure des données provenant de divers connecteurs.
Comme Presto est conçu pour être évolutif horizontalement, vous pouvez ajouter davantage de nœuds workers pour gérer une charge de requêtes ou des volumes de données croissants sans dégradation significative des performances.
Pourquoi choisir Presto par rapport aux autres moteurs ?
Bien que des outils comme Apache Spark et Flink dominent le paysage de l'ingénierie des données, ils répondent à des objectifs principaux différents. Spark est un moteur de calcul distribué à usage général, excellent pour les pipelines ETL et l'apprentissage automatique. Presto, en revanche, est spécialisé dans l'interrogation SQL interactive.
Les avantages clés incluent :
- Faible latence : Optimisé pour des temps de réponse de sous-seconde à sous-minute sur de grands ensembles de données.
- Prise en charge de multiples sources de données : Connectez-vous à Hive, Kafka, Cassandra, MySQL et au stockage cloud (S3, GCS) sans déplacer les données.
- Aucune duplication de données : Interrogez les données là où elles résident, réduisant ainsi les coûts de stockage et les complexités de synchronisation.
Pour débuter avec une requête simple
L'un des plus grands atouts de Presto est sa familiarité pour les développeurs SQL. Si vous connaissez SQL, vous pouvez interroger Presto. Voici un exemple de la manière dont vous pourriez interroger une grande table stockée dans Amazon S3 en utilisant le connecteur Hive.
-- Interrogation des données d'activité utilisateur depuis S3 via le Connecteur Hive
SELECT
user_id,
COUNT(event_id) AS total_events,
SUM(amount) AS total_spend
FROM
analytics_db.raw_events
WHERE
event_date BETWEEN '2023-01-01' AND '2023-12-31'
AND platform = 'mobile'
GROUP BY
user_id
HAVING
total_spend > 1000
ORDER BY
total_spend DESC
LIMIT 10;
Cette requête démontre plusieurs fonctionnalités clés : la réduction par partition (via event_date), le filtrage, l'agrégation et la limitation des résultats. Presto pousse ces filtres jusqu'au niveau du connecteur, minimisant ainsi la quantité de données lues depuis S3.
Meilleures pratiques pour le réglage des performances
Bien que Presto soit puissant dès l'installation, le réglage est essentiel pour les charges de travail en production. Voici trois conseils critiques :
- Partitionnement et Bucketing : Assurez-vous que vos données sous-jacentes sont partitionnées de manière logique (par exemple, par date). Cela permet à Presto de sauter les partitions non pertinentes, réduisant drastiquement les E/S.
- Limites de concurrence : Utilisez les propriétés de session pour contrôler le nombre de requêtes simultanées. Surcharger le coordinateur peut entraîner une augmentation de la latence pour tous les utilisateurs.
- Lecture sélective des colonnes : Sélectionnez toujours uniquement les colonnes dont vous avez besoin. Presto peut pousser les filtres de colonnes, réduisant la quantité de données transférées depuis le stockage.
Conclusion
Presto a redéfini ce qui est possible avec l'analyse SQL interactive sur le Big Data. En découplant le calcul du stockage et en tirant parti d'une architecture distribuée, il permet aux ingénieurs et analystes de données d'extraire des insights à partir de vastes lacs de données hétérogènes avec une vitesse sans précédent. Que vous migriez depuis Hadoop ou que vous construisiez un nouveau lac de données (data lakehouse), Presto reste une technologie fondamentale dans la pile de données moderne.
Pour ceux qui s'intéressent à l'avenir du projet, notez que la communauté a divisé la base de code originale en PrestoSQL (géré par la Fondation Presto) et Trino (le fork communautaire dirigé par les fondateurs de LinkedIn). Les deux partagent la même ADN et continuent de stimuler l'innovation dans le traitement distribué des requêtes.