Ir al contenido principal

Anuncio de la versión preliminar pública de Photon: el motor de consultas de próxima generación en Databricks Lakehouse Platform

photon-blog-og

Publicado: June 17, 2021

Anuncios7 min de lectura

Databricks Photon ahora está disponible de forma general en AWS y Azure.

Hoy, nos complace anunciar la disponibilidad de Photon en vista previa pública. Photon es un motor vectorizado nativo desarrollado en C++ para mejorar drásticamente el rendimiento de las consultas. Todo lo que tienes que hacer para beneficiarte de Photon es activarlo. Photon coordinará sin problemas el trabajo y los recursos y acelerará de manera transparente partes de tus consultas SQL y Spark. No se requiere ajuste ni intervención del usuario.


 <a href="https://www.databricks.com/resources/ebook/rise-data-lakehouse?itm_data=photonpublicpreviewengine-blog-riselakehousebook" target="_blank">Explore por qué los lakehouses son la arquitectura de datos del futuro</a> con el padre del data warehouse, Bill Inmon.</p><hr><p>Aunque el nuevo motor está diseñado para acelerar finalmente todas las cargas de trabajo, durante la versión preliminar, Photon se centra en ejecutar las cargas de trabajo de SQL más rápidamente, al tiempo que reduce el costo total por carga de trabajo. Hay dos maneras en las que puede beneficiarse de Photon:</p><ul><li>Como el motor de consultas predeterminado en <a href="https://www.databricks.com/product/databricks-sql" rel="noopener" target="_blank">Databricks SQL</a> sin costo adicional</li><li>Como parte de un nuevo <a href="https://docs.databricks.com/runtime/index.html" rel="noopener" target="_blank">runtime </a>de alto rendimiento en clústeres de Databricks, que <a href="https://www.databricks.com/product/aws-pricing/instance-types" rel="noopener" target="_blank">consume DBU a una tasa diferente </a>que el mismo tipo de instancia que ejecuta el runtime sin Photon.</li></ul><p>En este blog, analizaremos la motivación detrás de la creación de Photon, explicaremos cómo funciona Photon internamente y cómo monitorear la ejecución de consultas en Photon tanto desde Databricks SQL como desde los clústeres tradicionales en Databricks Data Science &amp; Data Engineering también.</p><h2>Más rápido con Photon</h2><p>Quizás se pregunten por qué crear un nuevo motor de consultas. Dicen que un gráfico de barras vale más que mil palabras, así que dejemos que los datos cuenten la historia.</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="Aceleración relativa de Databricks Runtime con Photon en comparación con la versión 2.1 usando TPC-DS de 1 TB" height="803"></a><figcaption>Imagen 1: Aceleración relativa de Databricks Runtime en comparación con la versión 2.1 utilizando TPC-DS 1TB</figcaption></figure><p>Como puede ver en este gráfico del rendimiento de Databricks Runtime utilizando el Power Test del benchmark TPC-DS (factor de escala de 1&nbsp;TB), el rendimiento aumentó de forma constante a lo largo de los años. Sin embargo, con la introducción de Photon, vemos un gran salto en el rendimiento de las consultas, ya que Photon es hasta 2 veces más rápido que Databricks Runtime 8.0. Por eso estamos muy entusiasmados con el potencial de Photon y apenas estamos empezando; la hoja de ruta de Photon contiene planes para una mayor cobertura y más optimizaciones.</p><p>Los primeros clientes de la versión preliminar privada han observado aceleraciones promedio de 2 a 4 veces utilizando Photon en cargas de trabajo de SQL como:</p><ul><li><strong>Trabajos basados en SQL</strong>: acelere los trabajos de producción a gran escala en DataFrames de SQL y Spark.</li><li><strong>Casos de uso de IoT</strong>: análisis de series temporales más rápido con Photon en comparación con Spark y el Databricks Runtime tradicional.</li><li><strong>Privacidad y cumplimiento de los datos</strong>: consulte conjuntos de datos a escala de petabytes para identificar y eliminar registros sin duplicar datos con Delta Lake, trabajos de producción y Photon.</li><li><strong>Carga de datos en Delta y Parquet</strong>: la E/S vectorizada de Photon acelera la carga de datos para las tablas Delta y Parquet, lo que reduce el tiempo de ejecución y los costos generales de los trabajos de ingeniería de datos.</li></ul><h2>Cómo funciona Photon</h2><p>Aunque Photon está escrito en C++, se integra directamente en Databricks Runtime y Spark. Esto significa que no se requieren cambios en el código para utilizar Photon. Permítame guiarlo a través de un rápido "ciclo de vida de una consulta" para ayudarle a entender dónde se conecta 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="Imagen 2: Ciclo de vida de una consulta de Photon" height="720"></a><figcaption>Imagen 2: Ciclo de vida de una consulta de Photon</figcaption></figure><p>Cuando un cliente envía una consulta o un comando al driver de Spark, este se analiza y el <a href="https://www.databricks.com/glossary/catalyst-optimizer" rel="noopener" target="_blank">optimizador Catalyst</a> realiza el análisis, la planificación y la optimización tal como lo haría si Photon no estuviera involucrado. La única diferencia es que, con Photon, el motor de ejecución revisa el plan físico y determina qué partes se pueden ejecutar en Photon. Se pueden realizar modificaciones menores en el plan para Photon, por ejemplo, cambiar una `sort merge join` por una `hash join`, pero la estructura general del plan, incluido el orden de las `join`, permanecerá igual. Dado que Photon aún no es compatible con todas las funciones que admite Spark, una sola consulta puede ejecutarse parcialmente en Photon y parcialmente en Spark. Este modelo de ejecución híbrido es completamente transparente para el usuario.</p><p>A continuación, el plan de consulta se divide en unidades atómicas de ejecución distribuida llamadas tareas que se ejecutan en hilos en los nodos de trabajo, los cuales operan en una partición específica de los datos. Es en este nivel donde el motor de Photon hace su trabajo. Puedes verlo como el reemplazo de la generación de código de etapa completa de Spark por una implementación de motor nativo. La librería de Photon se carga en la JVM, y Spark y Photon se comunican a través de <a href="https://en.wikipedia.org/wiki/Java_Native_Interface" rel="noopener" target="_blank">JNI</a>, pasando punteros de datos a la memoria off-heap. Photon también se integra con el gestor de memoria de Spark para el desbordamiento (spilling) coordinado en planes mixtos. Tanto Spark como Photon están configurados para utilizar memoria off-heap y coordinarse bajo presión de memoria.</p><p>Con la versión de vista previa pública, Photon admite muchos tipos de datos, operadores y expresiones, pero no todos. Consulta la <a href="https://docs.databricks.com/runtime/photon.html" rel="noopener" target="_blank">descripción general de Photon</a> en la documentación para obtener más detalles.</p><h2>Análisis de la ejecución de Photon</h2><p>Dado que no todas las cargas de trabajo y los operadores son compatibles actualmente, quizás se pregunte cómo elegir las cargas de trabajo que pueden beneficiarse de Photon y cómo detectar la presencia de Photon en el plan de ejecución. En resumen, la ejecución de Photon es ascendente: comienza en el operador de escaneo de tablas y continúa hacia arriba por el DAG (gráfico acíclico dirigido) hasta que llega a una operación no compatible. En ese punto, la ejecución sale de Photon y el resto de las operaciones se ejecutarán sin Photon.</p><ol><li><p>Si utiliza Photon en Databricks SQL, es fácil ver qué parte de una consulta se ejecutó con Photon:</p><p>&nbsp;</p></li><li>Haz clic en el ícono <strong>Historial de consultas</strong> en la barra lateral.</li><li>Haga clic en la línea que contiene la consulta que desea analizar.</li><li>En la ventana emergente Detalles de la consulta, haga clic en <strong>Detalles de ejecución</strong>.</li><li>Observe la métrica <strong>Task Time in Photon</strong> en la parte inferior.</li></ol><p>En general, cuanto mayor sea el porcentaje de tiempo de tarea en Photon, mayor será el beneficio de rendimiento de 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="Detalles de ejecución del historial de consultas de Databricks SQL" height="773"></a><figcaption>Imagen 3: Detalles de ejecución del historial de consultas de Databricks SQL</figcaption></figure><p>Si usas Photon en clústeres de Databricks, puedes ver la acción de Photon en la interfaz de usuario de Spark. La siguiente captura de pantalla muestra el DAG de detalles de la consulta. Hay dos indicaciones de Photon en el DAG. Primero, los operadores de Photon comienzan con Photon, como PhotonGroupingAgg. En segundo lugar, en el DAG los operadores y las etapas de Photon son de color durazno, mientras que los que no son de Photon son de color azul.</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 de los detalles de la consulta de la UI de Spark" height="300"></a><figcaption>Imagen 4: DAG de detalles de la consulta de la UI de Spark</figcaption></figure><h2>Primeros pasos con un ejemplo funcional con datos de taxis de NYC</h2><p>Como se mencionó anteriormente, hay dos formas de usar Photon:</p><ol><li>Photon está activado de forma predeterminada para todos los endpoints de Databricks SQL. Simplemente <a href="https://docs.databricks.com/sql/admin/sql-endpoints.html" rel="noopener" target="_blank">aprovisione un punto de conexión SQL</a>, ejecute sus consultas y utilice el método presentado anteriormente para determinar en qué medida Photon afecta al rendimiento.</li><li>Para ejecutar Photon en clústeres de Databricks (solo en AWS durante la vista previa pública), <a href="https://docs.databricks.com/clusters/configure.html#databricks-runtime" rel="noopener" target="_blank">seleccione un runtime de Photon al aprovisionar un nuevo clúster</a>. El nuevo tipo de instancia de Photon consume DBU a una tasa diferente que el mismo <a href="https://www.databricks.com/product/aws-pricing/instance-types" rel="noopener" target="_blank">tipo de instancia</a> que ejecuta el runtime que no es de Photon. Para obtener más detalles sobre las características específicas de las instancias de Photon y el consumo de DBU, consulte la <a href="https://www.databricks.com/product/aws-pricing/instance-types" rel="noopener" target="_blank">página de precios de Databricks para AWS</a>.</li></ol><p>Una vez que haya creado un punto de conexión SQL o un clúster habilitado para Photon, puede intentar ejecutar algunas consultas en el <a href="https://www1.nyc.gov/site/tlc/about/tlc-trip-record-data.page" rel="noopener" target="_blank">conjunto de datos de taxis de NYC</a> desde el editor SQL de Databricks o un notebook. Hemos precargado un extracto y lo hemos hecho accesible como parte de nuestros <a href="https://docs.databricks.com/data/databricks-datasets.html" rel="noopener" target="_blank">conjuntos de datos de Databricks</a>.</p><p>Primero, cree una nueva tabla que apunte a los datos existentes con el siguiente fragmento de SQL:</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>¡Prueba esta consulta y disfruta la velocidad de 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>Medimos el tiempo de respuesta de la consulta anterior con Photon y un Databricks Runtime convencional en un clúster de AWS precalentado con 2 ejecutores i3.2xlarge y un controlador i3.2xlarge. Estos son los resultados.</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 vs. Databricks Runtime en la consulta de ejemplo de los taxis de Nueva York" height="772"></a><figcaption>Imagen 5: Photon vs. Databricks Runtime en la consulta de ejemplo de taxis de NYC</figcaption></figure><p>Si desea obtener más información sobre Photon, también puede ver nuestra sesión del Data and AI Summit: <a href="https://www.databricks.com/session_na21/radical-speed-for-sql-queries-on-databricks-photon-under-the-hood" rel="noopener" target="_blank">Velocidad radical para consultas SQL: un vistazo a Photon</a>. Gracias por leer. ¡Esperamos sus comentarios al respecto!</p>

No te pierdas ninguna publicación de Databricks.

Suscríbete a nuestro blog y recibe las últimas publicaciones en tu bandeja de entrada.

¿Qué sigue?

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