Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

Was ist Apache Presto?

Apache 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 Apache Presto aufgebaut?

Der Aufbau von Apache 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 Presto Website entnommen.

Welche Vorteile ergeben sich durch die Nutzung von Presto?

Apache 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 Apache 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 Presto und Hadoop zusammen genutzt werden?

Apache 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.

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.

Apache Spark Komponenten

Es wird oft im Zusammenhang mit Apache 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 Apache 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.
  • Apache Presto hingegen hat sich vor allem auf die schnelle Verarbeitung von Datenabfragen bei großen Datenmengen spezialisiert.

Das solltest Du mitnehmen

  • Apache 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 Apache Presto keine eigene Datenquelle aufweist, wird es häufig zusammen mit Apache Hadoop als Alternative zu deren Hive Connector genutzt.

Andere Beiträge zum Thema Apache Presto

  • Offizielle Website


This post first appeared on Data Basecamp, please read the originial post: here

Share the post

Was ist Apache Presto?

×

Subscribe to Data Basecamp

Get updates delivered right to your inbox!

Thank you for your subscription

×