Qu'est-ce que Presto ou PrestoDB ?
Presto (ou PrestoDB) est un moteur de requête SQL distribué open source conçu dès le départ pour effectuer des requêtes analytiques rapides sur des données de toutes tailles. Il prend en charge aussi bien les sources de données non relationnelles (comme le système de fichiers distribué Hadoop (HDFS), Amazon S3, Cassandra, MongoDB et HBase) que les sources de données relationnelles (comme MySQL, PostgreSQL, Amazon Redshift, Microsoft SQL Server et Teradata).
Presto peut interroger les données là où elles sont stockées, sans avoir à les transférer vers un système d'analytique distinct. L'exécution des requêtes s'effectue en parallèle sur une architecture purement basée sur la mémoire, et la plupart des résultats sont renvoyés en quelques secondes. De nombreuses entreprises bien connues utilisent Presto, notamment Facebook, Airbnb, Netflix, Atlassian et Nasdaq.
Quelle est l'histoire de Presto ?
Presto a débuté en tant que projet sur Facebook, avec pour but d'exécuter des requêtes analytiques interactives sur un entrepôt de données de 300 Po, construit avec de grands clusters basés sur Hadoop/HDFS. Avant de créer Presto, Facebook a utilisé Apache Hive, créé et déployé en 2008, pour familiariser l'écosystème Hadoop avec la syntaxe SQL. Hive a eu un impact significatif sur l'écosystème Hadoop en simplifiant les tâches Java MapReduce complexes en requêtes de type SQL, tout en étant capable d'exécuter des tâches à grande échelle. Cependant, le service n'a pas été optimisé pour les performances rapides nécessaires aux requêtes interactives.
En 2012, le groupe Facebook Data Infrastructure a créé Presto, un système de requête interactif capable de fonctionner rapidement à l'échelle du pétaoctet. Celui-ci a été déployé à l'échelle de l'entreprise au printemps 2013. En novembre 2013, Facebook a mis Presto en open source sous la licence logicielle Apache et l'a rendu disponible pour tous en téléchargement sur Github. Aujourd'hui, Presto est devenu un choix populaire pour effectuer des requêtes interactives sur Hadoop et bénéficie de nombreuses contributions de la part de Facebook et d'autres entreprises. La mise en œuvre de Presto par Facebook profite à plus d'un millier d'employés, qui exécutent plus de 30 000 requêtes et traitent un pétaoctet de données par jour.
Comment fonctionne Presto ?
Presto est un système distribué qui fonctionne sur Hadoop et utilise une architecture similaire à un système de gestion de base de données à traitement massivement parallèle (MPP) classique. Il possède un nœud coordinateur qui fonctionne de manière synchronisée avec plusieurs composants master. Les utilisateurs soumettent leur requête SQL au coordinateur qui utilise un moteur de requête et d'exécution personnalisé pour analyser, planifier et anticiper un plan de requêtes distribué entre les composants master. Il est conçu pour prendre en charge la sémantique SQL ANSI standard, notamment les requêtes complexes, les agrégations, les jointures, les jointures externes gauche/droite, les sous-requêtes, les fonctions de fenêtre, les comptes distincts et les centiles approximatifs.
Une fois la requête compilée, Presto la traite en plusieurs étapes dans les composants master. Toutes les requêtes sont exécutées en mémoire et acheminées par pipeline à travers le réseau entre les stages, ce qui permet d'éviter les E/S non nécessaires. L'ajout de composants master supplémentaires permet un meilleur parallélisme et un traitement plus rapide.
Pour rendre Presto extensible à n'importe quelle source de données, il a été conçu avec une abstraction de stockage facilitant la création de connecteurs enfichables. Grâce à cela, Presto a de nombreux connecteurs, y compris les sources de données non relationnelles comme le système de fichiers distribué Hadoop (HDFS), Amazon S3, Cassandra, MongoDB et HBase, et les sources de données relationnelles comme MySQL, PostgreSQL, Amazon Redshift, Microsoft SQL Server et Teradata. Les données sont interrogées là où elles sont stockées, sans avoir à les transférer vers un système d'analytique distinct.
Quelles sont les différences entre Presto et Hadoop ?
Presto est un moteur de requêtes SQL distribué open source conçu pour des requêtes rapides et interactives sur des données dans HDFS et d'autres sources. Contrairement à Hadoop/HDFS, il ne possède pas son propre système de stockage. Presto et Hadoop sont donc complémentaires, et les entreprises les adoptent tous les deux pour relever des défis métier plus larges. Presto peut être installé avec n'importe quelle implémentation de Hadoop et est intégré à la distribution Amazon EMR Hadoop.
Qui utilise Presto ?
Presto est utilisé dans la production à très grande échelle dans de nombreuses entreprises connues comme Facebook, Airbnb, Netflix, Atlassian, Nasdaq et bien d'autres. La mise en œuvre de Presto par Facebook profite à plus d'un millier d'employés, qui exécutent plus de 30 000 requêtes et traitent un pétaoctet de données par jour. En moyenne, Netflix exécute environ 3 500 requêtes par jour sur ses clusters Presto. Airbnb a créé en open source Airpal, un outil d'exécution de requêtes basé sur le web qui fonctionne sur Presto. La communauté Presto se trouve sur ce forum et sur la page Facebook de Presto.
Comment déployer Presto dans le cloud ?
Presto est une charge de travail idéale dans le cloud, car le cloud offre des performances, une capacité de mise à l'échelle, une fiabilité, une disponibilité et des économies d'échelle considérables. Vous pouvez lancer un cluster Presto en quelques minutes. Vous n'avez pas à vous préoccuper de la mise en service des nœuds ni de la configuration de Presto ou de la mise en place et du réglage du cluster.
Comment AWS peut-il créer votre implémentation Presto dans le cloud ?
Amazon EMR et Amazon Athena sont les meilleurs emplacements pour déployer Presto dans le cloud, car ils offrent l'intégration et la rigueur de Presto pour vous à la mise à l'échelle, la simplicité et la rentabilité d'AWS. Avec Amazon EMR, vous pouvez lancer des clusters Presto en quelques minutes sans avoir besoin d'allouer des nœuds, de configurer des clusters, de configurer Presto ou d'ajuster des clusters. Amazon EMR vous permet d'allouer une, des centaines ou des milliers d'instances de calcul en quelques minutes. Amazon Athena vous permet de déployer Presto à l'aide de la plateforme sans serveur d'AWS, sans machines virtuelles ni clusters à configurer, à gérer ou à régler. Il vous suffit de cliquer sur vos données dans Amazon S3, de définir le schéma et de lancer des requêtes à l'aide de l'éditeur de requêtes intégré ou de vos outils de Business Intelligence (BI) existants. Athena exécute en parallèle et automatiquement les requêtes et adapte dynamiquement les ressources pour que les requêtes s'exécutent rapidement. Vous ne payez que les requêtes que vous exécutez.