Presto (également appelé PrestoDB) est un moteur de requêtes SQL distribué conçu pour l'analyse interactive à grande échelle. Cette rubrique présente ses principales fonctionnalités, son architecture, son modèle de données et les avantages de son exécution sur E-MapReduce (EMR).
Remarques importantes
Les versions 3.45.0 et 5.11.0 d'E-MapReduce (EMR), ou ultérieures, prennent en charge Presto, dont le numéro de version suit généralement le format 0.2XX. Dans les versions antérieures d'EMR, le composant Presto (version 3XX) utilisait le noyau PrestoSQL ou Trino. Pour plus d'informations, consultez la rubrique Trino.
Fonctionnalités clés
Écrit en Java, Presto offre des performances élevées et une mise à l'échelle horizontale. Il propose :
Une prise en charge complète de la norme ANSI SQL.
La connectivité à diverses sources de données, notamment Hive, Hudi, Iceberg, Delta Lake, MySQL et PostgreSQL.
-
La prise en charge de types de données avancés :
Tableaux et cartes (maps)
Données JSON
Données SIG (Système d'Information Géographique)
Données de couleur
-
L'extensibilité via plusieurs mécanismes :
Connecteurs de données enfichables
Types de données personnalisés
Fonctions SQL personnalisées
Le traitement par pipeline : il renvoie les résultats de la requête aux clients de manière incrémentielle au fur et à mesure du traitement des données, ce qui réduit le délai d'obtention du premier résultat.
-
L'observabilité intégrée :
Interface utilisateur web permettant de visualiser l'exécution des requêtes en temps réel.
Prise en charge du protocole JMX pour la collecte des métriques.
Architecture
La figure suivante illustre l'architecture du système Presto.
Presto repose sur une architecture coordinateur/travailleur. Un nœud coordinateur gère la planification des requêtes et l'état du cluster ; plusieurs nœuds travailleurs assurent l'exécution distribuée des requêtes.
Le coordinateur a pour responsabilités :
Accepter et analyser les requêtes, générer les plans d'exécution et distribuer les fragments de plan aux nœuds travailleurs.
Surveiller l'état de santé des nœuds travailleurs. Chaque travailleur maintient une connexion de type heartbeat avec le coordinateur pour signaler son statut.
Maintenir les métadonnées du metastore.
Les nœuds travailleurs exécutent les tâches de requête distribuées. Ils utilisent des connecteurs pour lire et traiter les données provenant de systèmes de stockage externes, puis renvoient les résultats au coordinateur.
Presto ne prend pas actuellement en charge une architecture de haute disponibilité (HA). Dans un cluster EMR, le coordinateur s'exécute sur le nœud master-1-1. Les travailleurs s'exécutent sur tous les nœuds Core et Task.
Cas d'utilisation
Presto est optimisé pour les charges de travail analytiques portant sur de grands ensembles de données. Il convient particulièrement aux scénarios suivants :
Extract, Transform, Load (ETL)
Requêtes ad hoc
Analyse à grande échelle de données structurées ou semi-structurées
Agrégation de données multidimensionnelles et génération de rapports
Presto est un moteur d'entrepôt de données. Sa prise en charge des transactions étant limitée, il n'est pas adapté aux charges de travail de traitement transactionnel en ligne (OLTP).
Avantages de Presto sur EMR
Par rapport à une installation open source autonome de Presto, Presto sur EMR offre :
Une configuration rapide : déploiement d'un cluster Presto de centaines de nœuds en quelques minutes.
Une mise à l'échelle élastique avec une configuration minimale.
Une intégration native avec la pile logicielle EMR, incluant Data Lake Formation (DLF), Object Storage Service (OSS) et OSS-HDFS.
Des opérations entièrement gérées : EMR se charge du provisionnement et de l'exploitation/maintenance du cluster, vous permettant de vous concentrer sur vos requêtes.
Concepts
Modèle de données
Presto organise les données selon une hiérarchie à trois niveaux : catalogue, schéma et table.
Catalogue : contient un ou plusieurs schémas et correspond à une source de données externe accessible via un connecteur. Une seule requête peut s'étendre sur plusieurs catalogues.
Schéma : équivalent à une instance de base de données ; contient une ou plusieurs tables.
Table : table relationnelle standard au sein d'un schéma.
Connecteur
Les connecteurs constituent la couche d'intégration entre Presto et les sources de données externes. Presto est fourni avec des connecteurs intégrés pour les systèmes courants et expose une interface SPI standard que vous pouvez implémenter pour connecter des sources de données personnalisées.
Généralement, chaque catalogue est associé à un type de connecteur spécifique, défini dans le fichier de propriétés du catalogue.
Informations complémentaires
Pour consulter la documentation open source de Presto correspondant à votre version, remplacez XXX dans l'URL https://prestodb.io/docs/XXX/ par le numéro de version de votre composant Presto, puis ouvrez l'URL dans un navigateur.
Par exemple, si votre version de Presto est 0 279, la documentation se trouve à l'adresse https://prestodb.io/docs/0.279/.