Interaktive Datenabfragen aus verschiedenen Datenquellen Presto – die SQL-Abfrage Engine auf Basis von Open Source

Von Thomas Joos

Presto ermöglicht die direkte Abfrage von Daten aus verschiedenen Datenquellen. Dabei lassen sich auch umfangreiche Datenmengen analysieren und auswerten. Das Tool bietet einen ähnlichen Leistungsumfang wie kommerzielle Data-Warehouse-Lösungen.

Anbieter zum Thema

Presto ist eine wertvolle Hilfe für Datenanalysten, die große Datenmengen aus verschiedenen Datenquellen mit hoher Geschwindigkeit analysieren wollen.
Presto ist eine wertvolle Hilfe für Datenanalysten, die große Datenmengen aus verschiedenen Datenquellen mit hoher Geschwindigkeit analysieren wollen.
(Bild: T. Joos)

Presto ist eine SQL-Abfrage-Engine auf Basis von Open Source unter dem Dach der Linux Foundation. Entwickelt wurde das Tool mit Java. Dennoch vermeidet es die typischen Probleme von Java-Code im Zusammenhang mit der Speicherzuweisung und Garbage Collection. Presto bietet eine Hadoop-freundliche Connector-Architektur.

Das ermöglicht das einfache Einbinden von Dateisystemen. Die Abfrage erfolgt direkt auf den Quell-Systemen. Es ist mit Presto nicht notwendig, eigene Data Warehouses aufzubauen. Damit Abfragen schneller durchgeführt werden können, speichert das System die Daten in einem Cache-Speicher.

Im Fokus der Engine steht die Ausführung interaktiver, analytischer Abfragen für verschiedene Datenquellen. Spezialisiert ist Presto vor allem für die Analyse von großen Datenmengen in kurzer Zeit. Auch Big-Data-Umgebungen wie Hadoop-Cluster können mit Presto abgefragt werden. HDFS ist daher für Presto kein Problem.

Datenabfragen über alle Quellen eines Unternehmens

Starten eines Presto-Servers in Linux
Starten eines Presto-Servers in Linux
(Bild: T. Joos)

Der Vorteil der Lösung besteht darin, dass die Daten für die Analyse nicht exportiert werden müssen, sondern Presto die Daten direkt an der Quelle abfragen kann. Weitere Beispiele dafür sind Hive, Cassandra, relationale Datenbanken und proprietäre Datenspeicher. Dazu gehören auch MongoDB, Redis, HBase und relationale Datenbanken wie MySQL, PostgreSQL und Microsoft SQL Server.

Die Abfragen können dabei zu jederzeit interaktiv erfolgen. Auch auf Cloud-Plattformen wie AWS, Azure und GCP ist Presto verfügbar. Da die Lösung auch S3-kompatibel ist, lassen sich Daten aus Cloudspeichern relativ einfach abfragen. Das gilt auch für Abfragen aus Google Cloud Storage, Azure Blob Store oder auch aus geclusterten Dateisystemen.

Für die Abfragen kann Presto auch die Daten aus mehreren Quellen kombinieren und Abfrageergebnisse auf Basis dieser Kombinationen miteinander aggregieren. Presto übernimmt im Data-Warehouse-Bereich den Part der Datenanalyse. Online Analytical Processing (OLAP) ist ein wichtiger Punkt bei der Verwendung von Presto.

Allerdings unterstützt die Lösung kein Online Transaction Processing (OLTP), es sollen keine Datenbanken durch das System ersetzt, sondern mit Presto analysiert werden. Auch bei größeren Datenmengen, die aus verschiedenen Datenquellen im Unternehmen stammen, kann Presto Ergebnisse in wenigen Sekunden bis Minuten liefern.

Facebook, Airbnb, Netflix und Dropbox setzen auf Presto

Auch Facebook setzt für die Analyse von verschiedenen Datenquellen auf Presto. Das ist auch daher bemerkenswert, weil Facebook zu den Unternehmen weltweit gehört, welche die meisten Datenmengen verarbeiten und analysieren. Der Konzern hat das Tool 2012 entwickelt und es 2019 der Linux Foundation übergeben. Der Quellcode ist auf Github verfügbar.

Facebook nutzt Datenquellen mit über 300 Petabyte für Presto. Über tausend Facebook-Mitarbeiter nutzen laut Presto die Abfrage-Engine. Weitere bekannte Unternehmen, die auf Presto setzen, sind Airbnb und Dropbox.

Presto als Container mit Docker in Betrieb nehmen

Presto kann auch als Microservices-Umgebung mit Docker installiert werden.
Presto kann auch als Microservices-Umgebung mit Docker installiert werden.
(Bild: T. Joos)

Wie viele Open Source Tools im Analyse-Bereich und Big Data setzt auch Presto vor allem auf den Betrieb als Container-Lösung mit Docker. Auf dieser Basis kann das System schnell auf Linux-Rechnern, aber auch in Windows und macOS zum Einsatz kommen. Die Struktur von Presto besteht aus einem Master-Knoten und verschiedenen Worker-Knoten, welche die Abfragen und Analysen durchführen.

Wenn Docker zur Verfügung steht, kann die Lösung mit einem Befehl heruntergeladen und lokal gestartet werden (https://hub.docker.com/r/ahanaio/prestodb-sandbox). Der Befehl dazu lautet zum Beispiel:

docker run -p 8080:8080 --name presto ahanaio/prestodb-sandbox

Abfragen mit der Presto-CLI durchführen
Abfragen mit der Presto-CLI durchführen
(Bild: T. Joos)

Wenn das Image noch nicht auf dem Rechner ist, lädt der Assistent das Image aus dem Docker-Hub herunter und startet die Lösung. Im nächsten Schritt wird die Presto-Cli gestartet:

docker exec -it presto presto-cli

Danach steht Presto auf dem Rechner bereits zur Verfügung. Um die angebundenen Kataloge anzuzeigen, steht der folgende Befehl in der Presto-Shell zur Verfügung:

show catalogs;

Die Verbindung zu den Datenquellen erfolgt mit Konnektoren. Dabei handelt es sich sozusagen um die Datenbanktreiber, die Presto für die Anbindung an die Datenbanken nutzen. Die Konnektoren sind mit den Katalogen verknüpft, die mit dem oberen Befehlen abgefragt werden können. Kataloge enthalten Schemata, die Presto wiederum für Abfragen nutzt. Die Schemata lassen sich mit dem folgenden Befehl in Presto anzeigen:

show schemas in tpcds;

Um einen Katalog und ein Schema für die Abfrage zu verwenden, kann zum Beispiel der folgende Befehl genutzt werden:

docker exec -it presto presto-cli --catalog tpcds --schema sf10

Danach kann die Abfrage mit dem folgenden Befehl erfolgen:

use tpcds.sf10;

Presto in macOS nutzen

Wer Presto in macOS nutzen will, kann die Installation auch direkt durchführen. Dazu wird der folgende Befehl verwendet:

brew install presto

Der Umgang mit der Presto-CLI entspricht anschließend dem Betrieb von Presto als Container-Lösung. Die Installation der CLI erfolgt normalerweise im Verzeichnis: „/usr/local/Cellar/presto/<version>/bin“

Um den Server zu starten, wird der folgende Befehl verwendet:

presto-server run

Soll der Server wieder beendet werden, kann der Befehl „presto-server stop“ genutzt werden. Der Zugriff auf die Weboberfläche von Presto erfolgt nach dem Start mit der URL:

http://localhost:8080

Fazit

Presto ist eine wertvolle Hilfe für Datenanalysten, die große Datenmengen aus verschiedenen Datenquellen mit hoher Geschwindigkeit analysieren wollen. Die Lösung ist schnell zu installieren und kann verschiedenste Datenquellen anbinden. Daher setzen auch viele große Konzerne wie Facebook, Netflix, Airbnb und Dropbox bei der Analyse auf Presto.

(ID:47937105)