Direkt zum Hauptinhalt

Ankündigung der öffentlichen Vorabversion von Photon: Die Abfrage-Engine der nächsten Generation in der Databricks Lakehouse-Plattform

photon-blog-og

Veröffentlicht: June 17, 2021

Ankündigungen6 min Lesezeit

Databricks Photon ist jetzt allgemein auf AWS und Azure verfügbar.

Wir freuen uns, heute die Verfügbarkeit von Photon als Public Preview bekannt zu geben. Photon ist eine native vektorisierte Engine, die in C++ entwickelt wurde, um die Abfrageleistung drastisch zu verbessern. Alles, was Sie tun müssen, um von Photon zu profitieren, ist die Engine einzuschalten. Photon wird Arbeit und Ressourcen nahtlos koordinieren und Teile Ihrer SQL- und Spark-Abfragen transparent beschleunigen. Keine Feinabstimmung und kein Benutzereingriff erforderlich.


 <a href="https://www.databricks.com/resources/ebook/rise-data-lakehouse?itm_data=photonpublicpreviewengine-blog-riselakehousebook" target="_blank">Erfahren Sie mit dem Vater des Data Warehouse, Bill Inmon, warum Lakehouses die Datenarchitektur der Zukunft sind</a>.</p><hr><p>Die neue Engine ist zwar darauf ausgelegt, letztendlich alle Workloads zu beschleunigen, aber während der Vorschau konzentriert sich Photon darauf, SQL-Workloads schneller auszuführen und gleichzeitig Ihre Gesamtkosten pro Workload zu reduzieren. Es gibt zwei Möglichkeiten, wie Sie von Photon profitieren können:</p><ul><li>Als default Abfrage-Engine in <a href="https://www.databricks.com/product/databricks-sql" rel="noopener" target="_blank">Databricks SQL</a> ohne zusätzliche Kosten</li><li>Als Teil einer neuen, hochleistungsfähigen <a href="https://docs.databricks.com/runtime/index.html" rel="noopener" target="_blank">Laufzeitumgebung </a>auf Databricks-Clustern, die <a href="https://www.databricks.com/product/aws-pricing/instance-types" rel="noopener" target="_blank">DBUs mit einer anderen Rate verbraucht </a>als derselbe Instanztyp, der die Nicht-Photon-Laufzeitumgebung ausführt.</li></ul><p>In diesem Blog erörtern wir die Beweggründe für die Entwicklung von Photon, erklären, wie Photon im Hintergrund funktioniert und wie die Queryausführung in Photon sowohl von Databricks SQL als auch von herkömmlichen Clustern in Databricks Data Science &amp; Data Engineering überwacht werden kann.</p><h2>Schneller mit Photon</h2><p>Man könnte sich fragen, warum eine neue Abfrage-Engine entwickelt werden sollte? Man sagt, ein Balkendiagramm sagt mehr als tausend Worte, also lassen wir die Daten die Geschichte erzählen.</p><figure><a href="https://www.databricks.com/wp-content/uploads/2021/06/photon-pr-blog-img-1.png" data-lightbox><img class="size-full wp-image-159095" style="width:1600px;" src="https://www.databricks.com/wp-content/uploads/2021/06/photon-pr-blog-img-1.png" alt="Relativer Speedup der Databricks Runtime mit Photon im Vergleich zu Version 2.1 mit TPC-DS 1TB" height="803"></a><figcaption>Abbildung 1: Relativer Speedup der Databricks Runtime im Vergleich zu Version 2.1 mit TPC-DS 1 TB</figcaption></figure><p>Wie Sie in diesem Diagramm der Leistung der Databricks Runtime mithilfe des Power-Tests aus dem TPC-DS-Benchmark (Skalierungsfaktor 1 TB) sehen können, hat sich die Leistung über die Jahre stetig verbessert. Mit der Einführung von Photon sehen wir jedoch einen enormen Sprung bei der Abfrageleistung – Photon ist bis zu 2-mal schneller als die Databricks Runtime 8.0. Deshalb sind wir vom Potenzial von Photon sehr begeistert, und wir stehen erst am Anfang – die Photon-Roadmap enthält Pläne für eine größere Abdeckung und weitere Optimierungen.</p><p>Kunden der frühen privaten Vorschau haben bei SQL-Workloads mit Photon eine durchschnittliche Beschleunigung um das 2- bis 4-fache festgestellt, z. B.:</p><ul><li><strong>SQL-basierte Jobs</strong> – Beschleunigen Sie umfangreiche Produktionsjobs für SQL und Spark DataFrames.</li><li><strong>IoT-Anwendungsfälle</strong> – Schnellere Zeitreihenanalyse mit Photon im Vergleich zu Spark und der herkömmlichen Databricks Runtime.</li><li><strong>Datenschutz und Compliance</strong> – Fragen Sie Datensätze im Petabyte-Bereich mit Delta Lake, Produktionsaufträgen und Photon ab, um Datensätze zu identifizieren und zu löschen, ohne Daten zu duplizieren.</li><li><strong>Laden von Daten in Delta und Parquet</strong> – Die vektorisierte E/A von Photon beschleunigt das Laden von Daten für Delta- und Parquet-Tabellen, wodurch die Gesamtlaufzeit und die Kosten von Data Engineering-Jobs gesenkt werden.</li></ul><h2>Wie Photon funktioniert</h2><p>Obwohl Photon in C++ geschrieben ist, lässt es sich direkt in Databricks Runtime und Spark integrieren. Das bedeutet, dass keine Codeänderungen erforderlich sind, um Photon zu verwenden. Lassen Sie mich Ihnen kurz den "Lebenszyklus einer Abfrage" erläutern, damit Sie verstehen, wo Photon ansetzt.</p><figure><a href="https://www.databricks.com/wp-content/uploads/2021/06/photon-pr-blog-img-2.png" data-lightbox><img class="size-full wp-image-159097" style="width:1280px;" src="https://www.databricks.com/wp-content/uploads/2021/06/photon-pr-blog-img-2.png" alt="Abbildung 2 – Lebenszyklus einer Photon-Abfrage" height="720"></a><figcaption>Abbildung 2: Lebenszyklus einer Photon-Abfrage</figcaption></figure><p>Wenn ein Client eine bestimmte Abfrage oder einen Befehl an den Spark-driver sendet, wird dieser geparst, und der <a href="https://www.databricks.com/glossary/catalyst-optimizer" rel="noopener" target="_blank">Catalyst Optimizer</a> führt die Analyse, Planung und Optimierung genauso durch, als wäre Photon nicht beteiligt. Der einzige Unterschied besteht darin, dass bei Photon die Runtime-Engine den physischen Plan durchläuft und ermittelt, welche Teile in Photon ausgeführt werden können. Am Plan für Photon können geringfügige Änderungen vorgenommen werden, z. B. die Änderung eines Sort-Merge-Joins in einen Hash-Join. Die Gesamtstruktur des Plans, einschließlich der Join-Reihenfolge, bleibt jedoch unverändert. Da Photon noch nicht alle Features von Spark unterstützt, kann eine einzelne Abfrage teilweise in Photon und teilweise in Spark ausgeführt werden. Dieses hybride Ausführungsmodell ist für den Benutzer vollständig transparent.</p><p>Der Abfrageplan wird dann in atomare Einheiten der verteilten Ausführung zerlegt, sogenannte Tasks, die in Threads auf Worker-Knoten ausgeführt werden und auf einer bestimmten Datenpartition arbeiten. Auf dieser Ebene arbeitet die Photon-Engine. Man kann es sich so vorstellen, dass der Whole-Stage-Codegen von Spark durch eine native Engine-Implementierung ersetzt wird. Die Photon-Bibliothek wird in die JVM geladen, und Spark und Photon kommunizieren über <a href="https://en.wikipedia.org/wiki/Java_Native_Interface" rel="noopener" target="_blank">JNI</a>, wobei Datenzeiger an den Off-Heap-Speicher übergeben werden. Photon lässt sich auch mit dem Speichermanager von Spark für koordiniertes Spilling in gemischten Plänen integrieren. Sowohl Spark als auch Photon sind so konfiguriert, dass sie Off-Heap-Speicher verwenden und sich bei Speicherdruck koordinieren.</p><p>Mit der Public-Preview-Version unterstützt Photon viele, aber nicht alle Datentypen, Operatoren und Ausdrücke. Weitere Details finden Sie in der <a href="https://docs.databricks.com/runtime/photon.html" rel="noopener" target="_blank">Photon-Übersicht</a> in der Dokumentation.</p><h2>Photon-Ausführungsanalyse</h2><p>Da heute nicht alle Workloads und Operatoren unterstützt werden, fragen Sie sich vielleicht, wie Sie Workloads auswählen, die von Photon profitieren können, und wie Sie das Vorhandensein von Photon im Ausführungsplan erkennen. Kurz gesagt, die Photon-Ausführung erfolgt nach dem Bottom-up-Prinzip – sie beginnt beim Operator für den Tabellenscan und setzt sich im DAG (gerichteter azyklischer Graph) nach oben fort, bis sie auf einen nicht unterstützten Vorgang stößt. An diesem Punkt verlässt die Ausführung Photon, und die restlichen Vorgänge werden ohne Photon ausgeführt.</p><ol><li><p>Wenn Sie Photon in Databricks SQL verwenden, können Sie leicht erkennen, welcher Anteil einer Abfrage mit Photon ausgeführt wurde:</p><p>&nbsp;</p></li><li>Klicken Sie in der Seitenleiste auf das Symbol <strong>Abfrageverlauf</strong>.</li><li>Klicken Sie auf die Zeile, die die Abfrage enthält, die Sie analysieren möchten.</li><li>Klicken Sie im Pop-up „Abfragedetails“ auf <strong>Ausführungsdetails</strong>.</li><li>Sehen Sie sich unten die Metrik <strong>Task Time in Photon</strong> an.</li></ol><p>Im Allgemeinen gilt: Je größer der Prozentsatz der Task-Zeit in Photon ist, desto größer ist der Performance-Vorteil durch Photon.</p><figure><a href="https://www.databricks.com/wp-content/uploads/2021/06/photon-pr-blog-img-3.jpg" data-lightbox><img class="size-full wp-image-159098" style="width:1200px;" src="https://www.databricks.com/wp-content/uploads/2021/06/photon-pr-blog-img-3.jpg" alt="Ausführungsdetails des Abfrageverlaufs von Databricks SQL" height="773"></a><figcaption>Abbildung 3: Ausführungsdetails des Databricks SQL-Abfrageverlaufs</figcaption></figure><p>Wenn Sie Photon in Databricks-Clustern verwenden, können Sie die Photon-Aktion in der Spark UI anzeigen. Der folgende Screenshot zeigt den DAG der Abfragedetails. Es gibt zwei Hinweise auf Photon im DAG. Zuerst starten Photon-Operatoren mit „Photon“, wie z. B. PhotonGroupingAgg. Zweitens sind im DAG die Operatoren und Stufen von Photon pfirsichfarben, die ohne Photon dagegen blau.</p><figure><a href="https://www.databricks.com/wp-content/uploads/2021/06/photon-pr-blog-img-4-rev.png" data-lightbox><img class="size-medium wp-image-159280" style="width:103px;" src="https://www.databricks.com/wp-content/uploads/2021/06/photon-pr-blog-img-4-rev-103x300.png" alt="DAG der Abfragedetails der Spark-Benutzeroberfläche" height="300"></a><figcaption>Abbildung 4: DAG der Abfragedetails der Spark UI</figcaption></figure><h2>Erste Schritte mit einem funktionierenden Beispiel für die Taxidaten von NYC</h2><p>Wie oben beschrieben, gibt es zwei Möglichkeiten, Photon zu verwenden:</p><ol><li>Photon ist für alle Databricks SQL-Endpunkte standardmäßig aktiviert. <a href="https://docs.databricks.com/sql/admin/sql-endpoints.html" rel="noopener" target="_blank">Stellen Sie einfach einen SQL-Endpunkt bereit</a>, führen Sie Ihre Queries aus und verwenden Sie die oben vorgestellte Methode, um festzustellen, wie stark sich Photon auf die Performance auswirkt.</li><li>Um Photon auf Databricks-Clustern auszuführen (während der Public Preview nur AWS), <a href="https://docs.databricks.com/clusters/configure.html#databricks-runtime" rel="noopener" target="_blank">wählen Sie bei der Bereitstellung eines neuen Clusters eine Photon-Laufzeitumgebung aus</a>. Der neue Photon-Instanztyp verbraucht DBUs mit einer anderen Rate als derselbe <a href="https://www.databricks.com/product/aws-pricing/instance-types" rel="noopener" target="_blank">Instanztyp</a>, der die Nicht-Photon-Laufzeitumgebung ausführt. Weitere Einzelheiten zu den Besonderheiten von Photon-Instanzen und dem DBU-Verbrauch finden Sie auf der <a href="https://www.databricks.com/product/aws-pricing/instance-types" rel="noopener" target="_blank">Databricks-Preisseite für AWS</a>.</li></ol><p>Nachdem Sie einen Photon-fähigen SQL endpoint oder Cluster erstellt haben, können Sie einige Abfragen für den <a href="https://www1.nyc.gov/site/tlc/about/tlc-trip-record-data.page" rel="noopener" target="_blank">NYC Taxi-Dataset</a> im Databricks SQL-Editor oder in einem Notebook ausführen. Wir haben einen Auszug vorab geladen und ihn als Teil unserer <a href="https://docs.databricks.com/data/databricks-datasets.html" rel="noopener" target="_blank">Databricks-Datasets</a> bereitgestellt.</p><p>Erstellen Sie zunächst eine neue Tabelle, die mit dem folgenden SQL-Snippet auf die vorhandenen Daten verweist:</p><pre>&lt;code class="language-plaintext"&gt; CREATE DATABASE IF NOT EXISTS photon_demo; CREATE TABLE photon_demo.nyctaxi_yellowcab_table USING DELTA OPTIONS ( path "/databricks-datasets/nyctaxi/tables/nyctaxi_yellow/" ); &lt;/code&gt;</pre><p>Probieren Sie diese Abfrage aus und genießen Sie die Geschwindigkeit von Photon!</p><pre>&lt;code class="language-plaintext"&gt; SELECT vendor_id, SUM(trip_distance) as SumTripDistance, AVG(trip_distance) as AvgTripDistance FROM photon_demo.nyctaxi_yellowcab_table WHERE passenger_count IN (1, 2, 4) GROUP BY vendor_id ORDER BY vendor_id; &lt;/code&gt;</pre><p>Wir haben die Antwortzeit der obigen Abfrage mit Photon und einer herkömmlichen Databricks Runtime auf einem aufgewärmten AWS-Cluster mit 2 i3.2xlarge-Executors und einem i3.2xlarge-Driver gemessen. Hier sind die Ergebnisse.</p><figure><a href="https://www.databricks.com/wp-content/uploads/2021/06/photon-pr-blog-img-5.png" data-lightbox><img class="size-full wp-image-159101" style="width:1356px;" src="https://www.databricks.com/wp-content/uploads/2021/06/photon-pr-blog-img-5.png" alt=" Photon im Vergleich zur Databricks Runtime bei der Beispielabfrage zu den NYC-Taxis" height="772"></a><figcaption>Abbildung 5: Photon im Vergleich zur Databricks Runtime bei der Beispielabfrage für die Taxidaten von NYC</figcaption></figure><p>Wenn Sie mehr über Photon erfahren möchten, können Sie sich auch unsere Sitzung vom Data and KI Summit ansehen: <a href="https://www.databricks.com/session_na21/radical-speed-for-sql-queries-on-databricks-photon-under-the-hood" rel="noopener" target="_blank">Radical speed for SQL Abfragen Photon Under the Hood</a>. Vielen Dank fürs Lesen, wir freuen uns auf Ihr Feedback dazu!</p>

Verpassen Sie keinen Beitrag von Databricks

Abonnieren Sie unseren Blog und erhalten Sie die neuesten Beiträge direkt in Ihren Posteingang.

Was kommt als Nächstes?

Introducing AI/BI: Intelligent Analytics for Real-World Data

Produto

June 12, 2024/11 min de leitura

Apresentando o AI/BI: analítica inteligente para dados do mundo real

Five Simple Steps for Implementing a Star Schema in Databricks With Delta Lake

Produto

September 12, 2024/8 min de leitura

Cinco etapas simples para implementar um esquema de estrela na Databricks com Delta Lake