Presto: Wie Facebook 300 Petabyte in Echtzeit analysiert

Facebook hat Presto als Open Source veröffentlicht, eine interaktive SQL-Engine für Hadoop, mit der sich große Datenmengen in kurzer Zeit analysieren lassen. Presto soll dabei zehnmal schneller sein als das Gespann aus Hive und Mapreduce.

Artikel veröffentlicht am ,
Nicht nur für Hadoop
Nicht nur für Hadoop (Bild: Presto)

Facebook speichert nach eigenen Angaben mehr als 300 Petabyte an Daten und nutzt diese für verschiedene Applikationen. Dabei greift Facebook auf unterschiedliche Ansätze zur Datenanalyse zurück, von der Batch-Verarbeitung, um Verknüpfungen zwischen Nutzern zu modellieren, bis zu maschinellem Lernen und interaktiven Analysen, die in Echtzeit ablaufen. Gerade Letzteres ist bei Daten in der Größenordnung von Facebook eine enorme Herausforderung, denn je schneller die Systeme auf die Abfragen der Analysten antworten, desto besser lassen sich die Daten auch untersuchen.

Inhalt:
  1. Presto: Wie Facebook 300 Petabyte in Echtzeit analysiert
  2. Nicht nur für Hadoop

Dazu hat Facebook ein Data-Warehouse aufgebaut, dessen Daten in einigen wenigen großen Hadoop-Clustern gespeichert sind und gewöhnlich mittels Mapreduce und Hive analysiert werden. Doch bei Datenmengen in Petabyte kommt dieser Ansatz an seine Grenzen, weshalb Facebook ein interaktives Analysesystem entwickelt hat, das für kurze Antwortzeiten optimiert ist: Presto.

Verteilte SQL-Query-Engine für Ad-hoc-Analysen

Bei Presto handelt es sich um eine verteilte SQL-Query-Engine, die für Ad-hoc-Analysen mit hoher Geschwindigkeit optimiert ist. Presto unterstützt Ansi SQL einschließlich komplexer Abfragen, Aggregationen, Joins und Fensterfunktionen. Dabei sendet der Client eine SQL-Abfrage an den Presto-Koordinator, der die Anfrage parst und analysiert und die Ausführung plant. Anschließend stellt ein Scheduler eine Ausführungspipeline zusammen, verteilt Aufgaben an die Nodes, die möglichst nah an den Daten liegen, und überwacht den Fortschritt. Der Client erhält dann Daten aus der Output-Stage, die wiederum von darunterliegenden Stages gefüllt wird.

Das Ausführungsmodell von Presto unterscheidet sich fundamental von Hive und Mapreduce: Hive übersetzt Abfragen in mehrere Stufen von Mapreduce-Tasks, die dann nacheinander ausgeführt werden. Dabei liest jede Task Daten von den Platten und schreibt Zwischenergebnisse zurück. Presto hingehen nutzt kein Mapreduce, sondern eine eigene Abfrage- und Ausführungsengine, die der SQL-Semantik folgt.

Um das Scheduling zu verbessern, werden alle Berechnungen im Speicher abgewickelt und zwischen verschiedenen Stages durchgereicht, um unnötiges I/O und die damit verbundenen Latenzen zu vermeiden. Dabei werden mehrere Stages parallel ausgeführt und Daten von einer Stage in die andere gestreamt, sobald sie zur Verfügung stehen. Das vermeidet Verzögerungen und sorgt für schnellere Antwortzeiten.

Umgesetzt wurde Presto in Java. Die Software kompiliert Teile des Query-Plans dynamisch in Byte-Code, aus dem die JavaVM optimierten nativen Maschinencode erzeugt.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
Nicht nur für Hadoop 
  1. 1
  2. 2
  3.  


Aktuell auf der Startseite von Golem.de
GPT-4
"Funken von allgemeiner künstlicher Intelligenz"

Microsoft Research enthüllt eine umfangreiche Sammlung von Fallbeispielen, die mit dem ChatGPT-Nachfolger GPT-4 erzeugt wurden. Die Ergebnisse sind beeindruckend.
Eine Analyse von Helmut Linde

GPT-4: Funken von allgemeiner künstlicher Intelligenz
Artikel
  1. Solarstrom: Greenakku verkauft separaten Speicher für Balkonkraftwerke
    Solarstrom
    Greenakku verkauft separaten Speicher für Balkonkraftwerke

    Nach dem Komplettset mit Solarpanels verkauft Greenakku sein Speichersystem für Balkonkraftwerke jetzt auch einzeln - sogar ohne Batterie.

  2. Solarenergie: Sungrow repariert Solaranlagen und verlängert Garantie
    Solarenergie
    Sungrow repariert Solaranlagen und verlängert Garantie

    Nach den Ausfällen bei Sungrow-Solarspeicheranlagen hat der Hersteller das Problem erklärt. Betroffene erhalten eine Reparatur und Garantieverlängerung.

  3. Smart-Home-Anwendung: MQTT unter Java nutzen
    Smart-Home-Anwendung
    MQTT unter Java nutzen

    Wer Daten von Sensoren oder ähnlichen Quellen von A nach B senden möchte, kann das Protokoll MQTT verwenden, dank entsprechender Bibliotheken auch einfach unter Java.
    Eine Anleitung von Florian Bottke

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    • Daily Deals • Radeon 7900 XTX 24 GB günstig wie nie • Alexa-Sale bei Amazon • Kingston Fury 16 GB Kit DDR4-3600 43,90€ • MindStar: AMD Ryzen 7 5800X3D 309€ • Nur noch heute: Cyberport Jubiläums-Deals • 3 Spiele kaufen, 2 zahlen • MediaMarkt-Osterangebote • Alternate: PC-Gehäuse von Thermaltake [Werbung]
    •  /