Was ist Presto oder PrestoDB?
Presto (oder PrestoDB) ist eine verteilte Open-Source-SQL-Abfrage-Engine, die von Grund auf für schnelle analytische Abfragen gegen Daten beliebiger Größe entwickelt wurde. Es unterstützt sowohl nicht-relationale Quellen, wie das Hadoop Distributed File System (HDFS), Amazon S3, Cassandra, MongoDB und HBase, als auch relationale Datenquellen wie MySQL, PostgreSQL, Amazon Redshift, Microsoft SQL Server und Teradata.
Presto kann Daten dort abfragen, wo sie gespeichert sind, ohne Daten in ein separates Analysesystem verschieben zu müssen. Die Abfrageausführung läuft parallel über eine reine speicherbasierte Architektur, wobei die meisten Ergebnisse innerhalb von Sekunden zurückgegeben werden. Sie werden feststellen, dass es von vielen bekannten Unternehmen wie Facebook, Airbnb, Netflix, Atlassian und Nasdaq verwendet wird.
Was ist die Geschichte von Presto?
Presto begann als Projekt bei Facebook, um interaktive analytische Abfragen für ein Data Warehouse von 300 PB auszuführen, das mit großen Hadoop/HDFS-basierten Clustern erstellt wurde. Vor der Entwicklung von Presto nutzte Facebook Apache Hive, das 2008 entwickelt und eingeführt wurde, um die Vertrautheit mit der SQL-Syntax in das Hadoop-Ökosystem zu bringen. Hive hatte einen erheblichen Einfluss auf das Hadoop-Ökosystem, da es komplexe Java-MapReduce-Aufgaben in SQL-ähnliche Abfragen vereinfachte und gleichzeitig Jobs in großem Umfang ausführen konnte. Es war jedoch nicht für die schnelle Leistung optimiert, die bei interaktiven Abfragen erforderlich ist.
2012 baute die Facebook Data Infrastructure Group Presto, ein interaktives Abfragesystem, das im Petabyte-Bereich schnell arbeiten konnte. Es wurde im Frühjahr 2013 unternehmensweit eingeführt. Im November 2013 stellte Facebook Presto unter der Apache Software License als Open Source zur Verfügung und stellte es für jedermann zum Herunterladen auf Github zur Verfügung. Heute ist Presto zu einer beliebten Wahl für interaktive Abfragen auf Hadoop geworden und hat viele Beiträge von Facebook und anderen Unternehmen erhalten. Die Presto-Implementierung von Facebook wird von über tausend Mitarbeitern verwendet, die mehr als 30 000 Abfragen ausführen und täglich ein Petabyte an Daten verarbeiten.
Wie funktioniert Presto?
Presto ist ein verteiltes System, das auf Hadoop läuft und eine Architektur verwendet, die einem klassischen MPP-Datenbankverwaltungssystem (Massively Parallel Processing) ähnelt. Das System hat einen Koordinatorknoten, der synchron mit mehreren Worker-Knoten arbeitet. Benutzer senden ihre SQL-Abfrage an den Koordinator, der eine benutzerdefinierte Abfrage- und Ausführungs-Engine verwendet, um einen verteilten Abfrageplan über die Worker-Knoten zu parsen, zu planen und zu terminieren. Es wurde entwickelt, um die standardmäßige ANSI-SQL-Semantik zu unterstützen, einschließlich komplexer Abfragen, Aggregationen, Verknüpfungen, Links-/Rechts-Outer-Joins, Unterabfragen, Fensterfunktionen, unterschiedliche Zählungen und ungefähre Perzentile.
Nachdem die Abfrage kompiliert wurde, verarbeitet Presto die Anfrage in mehreren Stufen über die Worker-Knoten hinweg. Die gesamte Verarbeitung erfolgt im Arbeitsspeicher und wird zwischen den Stufen über das Netzwerk geleitet, um unnötige E/A-Gemeinkosten zu vermeiden. Das Hinzufügen weiterer Worker-Knoten ermöglicht mehr Parallelität und eine schnellere Verarbeitung.
Um Presto auf jede Datenquelle erweiterbar zu machen, wurde es mit Speicherabstraktion konzipiert, um das Erstellen von steckbaren Konnektoren zu vereinfachen. Deswegen hat Presto viele Konnektoren, einschließlich nicht-relationaler Quellen, wie das Hadoop Distributed File System (HDFS), Amazon S3, Cassandra, MongoDB und HBase, und relationale Datenquellen wie MySQL, PostgreSQL, Amazon Redshift, Microsoft SQL Server und Teradata. Die Daten werden dort abgefragt, wo sie gespeichert sind, ohne dass sie in ein separates Analyse-System verschoben werden müssen.
Was sind die Unterschiede zwischen Presto und Hadoop?
Presto ist eine verteilte SQL-Abfrage-Engine von Open Source, die für schnelle, interaktive Abfragen von Daten in HDFS und anderen entwickelt wurde. Im Gegensatz zu Hadoop/HDFS verfügt es nicht über ein eigenes Speichersystem. Somit ist Presto eine Ergänzung zu Hadoop, da Unternehmen beide verwenden, um eine umfassendere geschäftliche Herausforderung zu lösen. Presto kann mit jeder Hadoop-Implementierung installiert werden und ist in der Amazon EMR-Hadoop-Distribution enthalten.
Wer benutzt Presto?
Presto wird in vielen namhaften Unternehmen in der Produktion in sehr großem Maßstab eingesetzt. Sie finden es bei Facebook, Airbnb, Netflix, Atlassian, Nasdaq und vielen anderen. Die Presto-Implementierung von Facebook wird von über tausend Mitarbeitern verwendet, die mehr als 30 000 Abfragen ausführen und täglich ein Petabyte an Daten verarbeiten. Im Durchschnitt führt Netflix rund 3 500 Abfragen pro Tag auf seinen Presto-Clustern durch. Airpal, ein webbasiertes Tool zur Ausführung von Abfragen, das auf Presto aufbaut, wurde von Airbnb entwickelt und als Open Source bereitgestellt. Die breitere Presto-Community finden Sie in diesem Forum und auf der Presto-Seite auf Facebook.
Wie können Sie Presto in der Cloud bereitstellen?
Presto ist ein idealer Workload in der Cloud, da die Cloud Leistung, Skalierbarkeit, Zuverlässigkeit, Verfügbarkeit und enorme Skaleneffekte bietet. Sie können einen Presto-Cluster in wenigen Minuten starten. Sie brauchen sich nicht um die Bereitstellung von Knoten, die Einrichtung, die Konfiguration von Presto oder die Optimierung von Clustern zu kümmern.
Wie kann AWS Ihre Presto-Implementierung in der Cloud erstellen?
Amazon EMR und Amazon Athena sind die besten Orte, um Presto in der Cloud bereitzustellen, da sie die Integration und die strengen Tests von Presto für Sie übernehmen und dabei die Skalierbarkeit, Einfachheit und Kosteneffizienz von AWS bieten. Mit Amazon EMR können Sie Presto-Cluster in Minutenschnelle starten, ohne sich um Knotenbereitstellung, Cluster-Setup, Presto-Konfiguration oder Cluster-Tuning Gedanken machen zu müssen. EMR erlaubt es Ihnen, eine, hunderte oder tausende von Recheninstanzen innerhalb von Minuten bereitzustellen. Mit Amazon Athena können Sie Presto mithilfe der AWS-Serverless-Plattform bereitstellen, ohne dass Server, virtuelle Maschinen oder Cluster eingerichtet, verwaltet oder optimiert werden müssen. Verweisen Sie einfach auf Ihre Daten in Amazon S3, definieren Sie das Schema und beginnen Sie mit der Abfrage mithilfe des integrierten Abfrage-Editors oder mit Ihren vorhandenen Business-Intelligence-Tools (BI). Athena parallelisiert Ihre Abfrage automatisch und skaliert die Ressourcen dynamisch, damit Abfragen schnell ausgeführt werden können. Sie zahlen ausschließlich für die Abfragen, die sie ausführen.
Nächste Schritte in AWS
Sie erhalten sofort Zugriff auf das kostenlose Kontingent von AWS.
Starten Sie mit der Entwicklung in der AWS-Managementkonsole.