Zum Inhalt springen

Was ist Presto?

  • Daten

Presto ist eine Open-Source verteilte SQL-Engine, die sich zur Abfrage von großen Datenmengen eignet. Sie wurde 2012 von Facebook entwickelt und anschließend unter der Apache-Lizenz Open-Source zur Verfügung gestellt. Die Engine bietet kein eigenes Datenbanksystem und wird deshalb oft mit bekannten Datenbanklösungen, wie Apache Hadoop oder MongoDB genutzt.

Wie ist Presto aufgebaut?

Der Aufbau von Presto ist vergleichbar mit den von klassischen Datenbank-Managementsystemen (DBMS), die das sogenannte Massively Parallel Processing (MPP) nutzen. Dabei werden verschiedene Komponenten genutzt, die unterschiedliche Aufgaben wahrnehmen:

  • Client: Der Client ist der Ausgangs- und Endpunkt jeder Query. Er gibt den SQL-Befehl an den Coordinator weiter und erhält das schlussendliche Ergebnis vom Worker wieder.
  • Coordinator: Der Coordinator erhält die auszuführenden Befehle vom Client und zerlegt sie, um analysieren zu können wie aufwändig deren Verarbeitung ist. Er plant bzw. koordiniert die Ausführung von mehreren Befehlen und überwacht deren Abarbeitung mithilfe des Schedulers. Anhand des Ausführungsplans, werden dann die Befehle weitergegeben an den Scheduler.
  • Scheduler: Der Scheduler ist ein Teil des Coordinators, der schlussendlich für die Weitergabe der Befehle an die Worker zuständig ist. Er überwacht die korrekte Ausführung der Befehle anhand des Plans, der vom Coordinator erstellt wurde.
  • Worker: Die Worker übernehmen die tatsächliche Ausführung der Befehle und erhalten von den Connectoren die Ergebnisse aus den Datenquellen. Die schlussendliche Ergebnisse werden dann wieder an den Client übergeben.
  • Connector: Die Connectors sind die Schnittstellen zu den unterstützten Datenquellen. Sie kennen die Eigenheiten der unterschiedlichen Datenbanken und Systeme und können dadurch die Befehle anpassen.

Welche Anwendungen nutzen Presto?

Diese SQL-Engine kann eingesetzt werden, wenn verschiedene Datenquellen miteinander verbunden werden sollen, die große Datenmengen speichern. Diese lassen sich, selbst wenn sie nicht-relationalle Datenbanken sind, mithilfe von klassischen SQL Befehlen steuern. Presto kommt oft im Big Data Bereich zum Einsatz, da dort niedrige Abfragezeiten und eine hohe Performance von immenser Bedeutung sind. Außerdem kann es auch für Abfragen auf Data Warehouses genutzt werden.

In der Industrie setzen bereits viele namhafte Unternehmen auf Presto. Neben Facebook, die die Query-Engine erfunden haben, zählen dazu beispielsweise:

  • Uber nutzt die SQL Query-Engine für ihr massives Data Lakehouse mit weit über 59 Petabyte an Daten. Verschiedene Data Scientists, aber auch normale User, müssen auf diese Daten in kurzer Zeit zugreifen können.
  • Bei Twitter wurde die immens steigende Datenmenge auch ein Kostenproblem, da die Ausgaben für SQL-Abfragen stiegen. Deshalb wurde auf SQL Query-Engines gesetzt, um das System horizontal skalieren zu können. Außerdem wurde ein Machine Learning Modell trainiert, das bereits vor einer Abfrage die voraussichtliche Abfragezeit vorhersagen kann.
  • Alibaba baut auf SQL Query-Engines bei dem Aufbau ihres Data Lakes.

Alle diese Beispiele wurden von der Use Case Section auf der Website entnommen.

Welche Vorteile ergeben sich durch die Nutzung von Presto?

Presto bietet einige Vorteile bei der Arbeit mit großen Datenmengen. Dazu zählen unter anderem:

Open-Source

Die Open-Source Verfügbarkeit bietet nicht nur die Möglichkeit das Tool ohne Lizenzkosten zu nutzen, sondern geht auch damit einher, dass der Quellcode eingesehen und mit ausreichend Know-How auch auf die eigenen Bedürfnisse zugeschnitten werden kann.

Darüber hinaus haben Open-Source Programme auch oft eine große, aktive Community, sodass Probleme meist durch eine schnelle Internetrecherche gelöst werden können. Diese vielen aktiven Nutzer von Presto sorgen außerdem dafür, dass das System ständig weiterentwickelt und verbessert wird, wovon auch wiederum alle anderen Anwender profitieren.

Hohe Performance

Diese SQL Query-Engine kann aufgrund der Architektur auch große Datenmengen innerhalb von wenigen Sekunden und ohne große Latenzzeiten abfragen. Ermöglicht wird diese hohe Performance durch die verteilte Architektur, die eine horizontale Skalierung des Systems möglich macht.

Darüber hinaus kann Presto sowohl On-Premise als auch in der Cloud betrieben werden, sodass die Performance, bei Bedarf, durch einen Umzug in die Cloud weiter verbessert werden kann.

Hohe Kompatibilität

Durch die Nutzung der Structured Query Language, ist Presto für viele Anwender einfach nutzbar, da der Umgang mit der Abfragesprache bereits bekannt ist und dieses Wissen auch weiterhin genutzt werden kann. Dadurch lassen sich auch komplexe Funktionen einfach umsetzen.

Die Kompatibilität wird weiterhin sichergestellt durch eine Vielzahl an verfügbaren Konnektoren für gängige Datenbanksysteme, wie MongoDB, MySQL oder das Hadoop Distributed File System. Falls diese nicht ausreichen sollten, können auch eigene Konnektoren konfiguriert oder geschrieben werden.

Wie können Daten mithilfe von Presto abgefragt werden?

Die Abfrage mit Presto umfasst die Verbindung mit einer Datenquelle und die Ausführung von SQL-Abfragen. Hier sind die grundlegenden Schritte für Abfragen mit Presto:

  • Installation: Installiere Presto auf einem Cluster oder einer einzelnen Maschine. Du kannst die neueste Version von der offiziellen Website herunterladen.
  • Konfiguration: Konfiguriere das System für die Verbindung mit den Datenquellen, die Du abfragen möchtest. Dazu müssen die Konnektoren für jede Datenquelle eingerichtet, die Authentifizierungsdetails angegeben und die erforderlichen Parameter festgelegt sein.
  • Verbindung herstellen: Verwende einen Client, um eine Verbindung mit dem Presto-Cluster oder dem Rechner herzustellen. Der Presto-Client kann eine Befehlszeilenschnittstelle oder ein GUI-Tool wie Presto CLI oder SQL Workbench sein.
  • Führe SQL-Abfragen aus: Sobald Du verbunden bist, kannst Du SQL-Abfragen gegen die Datenquellen ausführen. Die Abfragen können einfache SELECT-Anweisungen oder komplexere Abfragen mit JOINs, GROUP BYs und Unterabfragen sein.
  • Optimierung der Abfragen: Presto bietet mehrere Optionen zur Optimierung von Abfragen, wie z. B. die Einstellung der Anzahl der Knoten, die Konfiguration der Speichergrenzen und die Verwendung von Abfrageoptimierungstechniken wie kostenbasierte Optimierung und dynamische Filterung.
  • Abfrageausführung überwachen: Das Programm bietet mehrere Tools zur Überwachung der Abfrageausführung, wie z. B. CLI, die Web-UI und die Abfrageprotokolle. Du kannst diese Tools verwenden, um den Fortschritt der Abfragen zu verfolgen, die Ressourcennutzung zu überwachen und etwaige Probleme zu beheben.

Zusammenfassend lässt sich sagen, dass die Abfrage mit Presto die Verbindung zu den Datenquellen, die Ausführung von SQL-Abfragen und die Optimierung der Abfragen für die Leistung umfasst. Mit seiner schnellen Abfrageausführung und der Unterstützung für verschiedene Datenquellen kann die Software ein wertvolles Tool für die Verarbeitung und Analyse von Big Data sein.

Wie können Presto und Hadoop zusammen genutzt werden?

Presto hat von Haus aus keine integrierte Datenquelle, die Informationen speichern kann. Deshalb ist es auf die Nutzung von anderen, externen Datenbanken angewiesen. In der Praxis wird dafür häufig Apache Hadoop, bzw. das Hadoop Distributed File System (HDFS) genutzt.

Das Bild zeigt die verschiedenen Hadoop Komponenten.
Übersicht der Hadoop-Komponenten | Quelle: Autor

Die Verbindung zwischen HDFS und Presto wird über den Hive Connector hergestellt. Der Vorteil besteht vor allem darin, dass mithilfe von Presto verschiedene Dateiformate einfach durchforstet werden können und deshalb alle HDFS Dateien durchsucht werden können. Es wird dabei gerne als Alternative für Hive benutzt, da Presto speziell auf schnelle Abfragen optimiert wurde, was Hive hingegen nicht bieten kann.

Was sind die Unterschiede zwischen Presto und Spark?

Apache Spark ist ein verteiltes Analytics-Framework, welches für viele verschiedene Big Data Anwendungen genutzt werden kann. Dabei setzt es auf In-Memory Datenspeicherung und eine parallele Ausführung von Prozessen, um eine hohe Performance zu gewährleisten. Es ist einer der umfangreichsten Big Data Systeme am Markt und bietet unter anderem Batchverarbeitung, Graphdatenbanken oder Unterstützung für Künstliche Intelligenz.

Das Bild zeigt die vier Komponenten von Apache Spark nämlich MLlib, GraphX, SparkSQL und SparkStreaming.
Apache Spark Komponenten | Quelle: Autor

Es wird oft im Zusammenhang mit Presto genannt bzw. sogar als Konkurrenz dazu verstanden. Jedoch sind die beiden Systeme sehr verschieden und teilen sich nur wenige Gemeinsamkeiten. Beide Programme sind Open-Source verfügbare Systeme bei der Arbeit mit Big Data. Sie können beide eine gute Performance bieten, durch ihre verteilte Architektur und die Möglichkeit der Skalierung. Dementsprechend können sie auch sowohl On-Premise als auch in der Cloud betrieben werden.

Neben diesen (wenn auch eher wenigen) Gemeinsamkeiten unterscheiden sich Apache Spark und Presto jedoch in einigen grundsätzlichen Eigenschaften:

  • Der Spark Core unterstützt erstmal keine SQL-Abfragen, dazu benötigt man die zusätzliche Komponente SparkSQL. Bei Presto hingegen handelt es sich um eine reise SQL Query-Engine.
  • Spark bietet eine sehr breite Palette an Anwendungsmöglichkeiten, beispielsweise auch durch die Möglichkeit ganze Machine Learning Modelle aufzubauen und zu deployen.
  • Presto hingegen hat sich vor allem auf die schnelle Verarbeitung von Datenabfragen bei großen Datenmengen spezialisiert.

Das solltest Du mitnehmen

  • Presto ist eine Open-Source verteilte SQL-Engine, die sich zur Abfrage von großen Datenmengen eignet.
  • Die Engine kann für verteilte Abfragen genutzt werden, die schnelle Antwortzeiten und geringe Latenzzeiten aufweisen sollen.
  • Presto unterscheidet sich zu Apache Spark darin, dass es vor allem auf die Datenabfrage konzentriert ist, während Spark eine breite Palette an Anwendungsmöglichkeiten bietet.
  • Da Presto keine eigene Datenquelle aufweist, wird es häufig zusammen mit Apache Hadoop als Alternative zu deren Hive Connector genutzt.
Bivariate Analysis / Bivariate Analyse

Was ist die Bivariate Analyse?

Nutzen Sie die Bivariate Analyse: Erforschen Sie Typen und Streudiagramme und nutzen Sie Korrelation und Regression.

RESTful API

Was ist eine RESTful API?

Erfahren Sie alles über RESTful APIs und wie sie Ihre Webentwicklungsprojekte effizienter und skalierbarer machen können.

Time Series Data / Zeitreihendaten

Was sind Zeitreihendaten?

Gewinnen Sie mithilfe von Analyse- und Prognosetechniken Erkenntnisse aus Zeitreihendaten. Entdecken Sie Trends und Muster!

Balkendiagramm / Bar Chart

Was ist ein Balkendiagramm?

Entdecken Balkendiagramme bei der Datenvisualisierung. Lernen Sie, wie man sie für aufschlussreiche Datenanalyse erstellt und anpasst.

Liniendiagramm / Line Chart

Was ist ein Liniendiagramm?

Meistern Sie die Kunst der Liniendiagramme: Lernen Sie in unserem Leitfaden, wie Sie Trends und Muster visualisieren können.

Data Preprocessing

Was ist Data Preprocessing?

Optimieren Sie Ihre Datenanalyse mit effektivem Data Preprocessing. Lernen Sie das Wesentliche in unserem Leitfaden zur Datenvorverarbeitung.

Andere Beiträge zum Thema Presto

Das Logo zeigt einen weißen Hintergrund den Namen "Data Basecamp" mit blauer Schrift. Im rechten unteren Eck wird eine Bergsilhouette in Blau gezeigt.

Verpass keine neuen Beiträge!

Wir versenden keinen Spam! Lies die Details gerne in unserer Datenschutzrichtlinie nach.

Cookie Consent mit Real Cookie Banner