Databricks Photon è ora disponibile a livello generale su AWS e Azure.
Oggi siamo entusiasti di annunciare la disponibilità di Photon in anteprima pubblica. Photon è un motore vettorizzato nativo sviluppato in C++ per migliorare notevolmente le prestazioni delle query. Per cogliere i vantaggi di Photon basta solo iniziare a utilizzarlo. Photon coordinerà lavoro e risorse in modo pienamente integrato e accelererà in maniera trasparente porzioni delle query SQL e Spark. Non servono aggiustamenti né interventi dell'utente.
<a href="https://www.databricks.com/resources/ebook/rise-data-lakehouse?itm_data=photonpublicpreviewengine-blog-riselakehousebook" target="_blank">Scopri perché le lakehouse sono l'architettura dei dati del futuro</a> con il padre del data warehouse, Bill Inmon.</p><hr><p>Il nuovo motore è progettato per accelerare tutti i carichi di lavoro, ma in fase di anteprima Photon è ottimizzato per l'esecuzione più rapida dei carichi di lavoro SQL, riducendo al contempo il costo totale per ogni carico di lavoro. Esistono due modi per trarre vantaggio da Photon:</p><ul><li>Come motore di query default su <a href="https://www.databricks.com/product/databricks-sql" rel="noopener" target="_blank">Databricks SQL</a> senza costi aggiuntivi</li><li>Come parte di un nuovo <a href="https://docs.databricks.com/runtime/index.html" rel="noopener" target="_blank">runtime </a>ad alte prestazioni sui Databricks clusters, che <a href="https://www.databricks.com/product/aws-pricing/instance-types" rel="noopener" target="_blank">consuma DBU a una velocità diversa </a>rispetto allo stesso tipo di istanza che esegue il runtime non Photon.</li></ul><p>In questo blog discuteremo la motivazione alla base della creazione di Photon, spiegheremo il suo funzionamento interno e come monitorare l'esecuzione delle query in Photon sia da Databricks SQL che dai cluster tradizionali su Databricks Data Science & Data ingegneria.</p><h2>Più veloce con Photon</h2><p>Ci si potrebbe chiedere: perché creare un nuovo motore di query? Si dice che un grafico a barre valga più di mille parole, quindi lasciamo che siano i dati a raccontare la storia.</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="Accelerazione relativa di Databricks Runtime con Photon rispetto alla versione 2.1 utilizzando TPC-DS 1TB" height="803"></a><figcaption>Immagine 1: speedup relativo di Databricks Runtime rispetto alla versione 2.1 utilizzando TPC-DS da 1 TB</figcaption></figure><p>Come si può vedere da questo grafico delle prestazioni di Databricks Runtime utilizzando il Power Test del benchmark TPC-DS (fattore di scala 1 TB), le prestazioni sono aumentate costantemente nel corso degli anni. Tuttavia, con l'introduzione di Photon, si assiste a un enorme balzo in avanti nelle prestazioni delle query: Photon è fino a 2 volte più veloce di Databricks Runtime 8.0. Ecco perché siamo molto entusiasti del potenziale di Photon e siamo solo all'inizio: la roadmap di Photon contiene piani per una maggiore copertura e ulteriori ottimizzazioni.</p><p>I primi clienti dell'anteprima privata hanno osservato un'accelerazione media da 2 a 4 volte utilizzando Photon su carichi di lavoro SQL come:</p><ul><li><strong>Job basati su SQL</strong> - Accelera i Job di produzione su larga scala su SQL e DataFrames di Spark.</li><li><strong>Casi d'uso IoT</strong> - Analisi più rapida delle serie temporali con Photon rispetto a Spark e al tradizionale Databricks Runtime.</li><li><strong>Privacy dei dati e conformità</strong> - Esegui query su set di dati su scala petabyte per identificare ed eliminare record senza duplicare i dati con Delta Lake, processi di produzione e Photon.</li><li><strong>Caricamento di dati in Delta e Parquet</strong> - L'I/O vettorizzato di Photon accelera i caricamenti di dati per le tabelle Delta e Parquet, riducendo il tempo di esecuzione complessivo e i costi dei Job di Data ingegneria.</li></ul><h2>Come funziona Photon</h2><p>Sebbene Photon sia scritto in C++, si integra direttamente in e con Databricks Runtime e Spark. Ciò significa che non sono necessarie modifiche al codice per utilizzare Photon. Lascia che ti illustri un rapido "ciclo di vita di una query" per aiutarti a capire dove si inserisce Photon.</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="Immagine 2 - Ciclo di vita di una query Photon" height="720"></a><figcaption>Immagine 2: Ciclo di vita di una query Photon</figcaption></figure><p>Quando un client invia una determinata query o un comando al driver Spark, questo viene analizzato e l'ottimizzatore <a href="https://www.databricks.com/glossary/catalyst-optimizer" rel="noopener" target="_blank">Catalyst</a> esegue l'analisi, la pianificazione e l'ottimizzazione proprio come farebbe se non fosse coinvolto Photon. L'unica differenza è che con Photon il motore di runtime esamina il piano fisico e determina quali parti possono essere eseguite in Photon. Al piano per Photon possono essere apportate piccole modifiche, ad esempio, cambiando un sort merge join in un hash join, ma la struttura complessiva del piano, incluso l'ordine dei join, rimarrà la stessa. Dato che Photon non supporta ancora tutte le funzionalità di Spark, una singola query può essere eseguita parzialmente in Photon e parzialmente in Spark. Questo modello di esecuzione ibrido è completamente trasparente per l'utente.</p><p>Il piano della query viene quindi suddiviso in unità atomiche di esecuzione distribuita chiamate task, che vengono eseguite in thread su nodi worker e operano su una partizione specifica dei dati. È a questo livello che il motore Photon svolge il suo lavoro. Lo si può considerare come la sostituzione della whole stage codegen di Spark con un'implementazione del motore nativo. La libreria Photon viene caricata nella JVM e Spark e Photon comunicano tramite <a href="https://en.wikipedia.org/wiki/Java_Native_Interface" rel="noopener" target="_blank">JNI</a>, passando puntatori di dati alla memoria off-heap. Photon si integra anche con il gestore della memoria di Spark per lo spilling coordinato nei piani misti. Sia Spark che Photon sono configurati per utilizzare la memoria off-heap e si coordinano in condizioni di pressione sulla memoria.</p><p>Con la release di anteprima pubblica, Photon supporta molti, ma non tutti, i tipi di dati, gli operatori e le espressioni. Per maggiori dettagli, consulta la <a href="https://docs.databricks.com/runtime/photon.html" rel="noopener" target="_blank">panoramica di Photon</a> nella documentazione.</p>
Dato che non tutti i carichi di lavoro e gli operatori sono attualmente supportati, potresti chiederti come scegliere i carichi di lavoro che possono trarre vantaggio da Photon e come rilevarne la presenza nel piano di esecuzione. In breve, l'esecuzione di Photon è di tipo bottom-up: inizia dall'operatore di scansione della tabella e risale il DAG (grafo aciclico diretto) finché non incontra un'operazione non supportata. A quel punto, l'esecuzione esce da Photon e il resto delle attività operative verrà eseguito senza Photon.
Se utilizzi Photon su Databricks SQL, è facile vedere quale parte di una query è stata eseguita utilizzando Photon:
In generale, maggiore è la percentuale di tempo di esecuzione in Photon, maggiore sarà il vantaggio in termini di prestazioni offerto da Photon.

Se si utilizza Photon su cluster Databricks, è possibile visualizzare l'azione di Photon nell'interfaccia utente di Spark. La schermata seguente mostra il DAG dei dettagli della query. Ci sono due indicazioni di Photon nel DAG. Innanzitutto, gli operatori Photon iniziano con Photon, come PhotonGroupingAgg. In secondo luogo, nel DAG gli operatori e gli stadi di Photon sono colorati di pesca, mentre quelli non-Photon sono blu.

Come discusso in precedenza, esistono due modi per utilizzare Photon:
Una volta creato un SQL endpoint o un cluster abilitato per Photon, è possibile provare a eseguire alcune query sul set di dati dei taxi di New York dall'editor Databricks SQL o da un Notebook. Abbiamo precaricato un estratto e lo abbiamo reso accessibile come parte dei nostri set di dati Databricks.
Per prima cosa, crea una nuova tabella che punti ai dati esistenti con il seguente snippet SQL:
Prova questa query e goditi la velocità di Photon!
Abbiamo misurato il tempo di risposta della query precedente con Photon e un Databricks Runtime convenzionale su un cluster AWS preriscaldato con 2 executor i3.2xlarge e un driver i3.2xlarge. Ecco i risultati.

Per saperne di più su Photon, è possibile guardare la sessione del nostro Data and AI Summit: Radical speed for SQL Queries Photon Under the Hood. Grazie per la lettura, attendiamo il tuo feedback!
Resta aggiornato con noi
Consigliato per te
Annunci
17 giugno 2021/6 min di lettura
Produto
12 giugno 2024/11 min di lettura
Produto
12 settembre 2024/8 min di lettura