Databricks Photon agora está disponível para o público geral na AWS e no Azure.
Hoje, temos o prazer de anunciar a disponibilidade do Photon em pré-visualização pública. O Photon é um mecanismo vetorizado nativo desenvolvido em C++ para melhorar drasticamente o desempenho da query. Tudo o que você precisa fazer para colher os benefícios do Photon é “girar a chave”. O Photon coordenará o trabalho e os recursos de maneira totalmente integrada e acelerará de forma transparente partes das queries SQL e Spark. Nenhum ajuste ou intervenção do usuário é necessário.
<a href="https://www.databricks.com/resources/ebook/rise-data-lakehouse?itm_data=photonpublicpreviewengine-blog-riselakehousebook" target="_blank">Explore por que os lakehouses são a arquitetura de dados do futuro</a> com o pai do data warehouse, Bill Inmon.</p><hr><p>Embora o novo mecanismo tenha sido projetado para, em última análise, acelerar todas as cargas de trabalho, durante a visualização, o Photon está focado em executar cargas de trabalho SQL mais rapidamente, ao mesmo tempo em que reduz seu custo total por carga de trabalho. Há duas maneiras de se beneficiar do Photon:</p><ul><li>Como o mecanismo de query default no <a href="https://www.databricks.com/product/databricks-sql" rel="noopener" target="_blank">Databricks SQL</a> sem custo adicional</li><li>Como parte de um novo <a href="https://docs.databricks.com/runtime/index.html" rel="noopener" target="_blank">runtime </a>de alto desempenho em clusters do Databricks, que <a href="https://www.databricks.com/product/aws-pricing/instance-types" rel="noopener" target="_blank">consome DBUs a uma taxa diferente </a>do que o mesmo tipo de instância executando o runtime não Photon.</li></ul><p>Neste blog, discutiremos a motivação por trás da criação do Photon, explicaremos como o Photon funciona internamente e também como monitorar a execução de queries no Photon tanto no Databricks SQL quanto em clusters tradicionais no Databricks Data Science & Data Engineering.</p><h2>Mais rápido com o Photon</h2><p>Alguém pode se perguntar: por que criar um novo mecanismo de consulta? Dizem que um gráfico de barras vale mais que mil palavras, então vamos deixar os dados contarem a história.</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="Aceleração relativa do Databricks Runtime com Photon em comparação com a versão 2.1 usando o TPC-DS de 1 TB" height="803"></a><figcaption>Imagem 1: Aceleração relativa do Databricks Runtime em comparação com a versão 2.1 usando o TPC-DS de 1 TB</figcaption></figure><p>Como você pode ver neste gráfico de desempenho do Databricks Runtime usando o Power Test do benchmark TPC-DS (fator de escala de 1 TB), o desempenho aumentou constantemente ao longo dos anos. No entanto, com a introdução do Photon, vemos um grande avanço no desempenho de queries — o Photon é até 2x mais rápido que o Databricks Runtime 8.0. É por isso que estamos muito entusiasmados com o potencial do Photon, e estamos apenas começando -- o roteiro do Photon contém planos para maior cobertura e mais otimizações.</p><p>Os primeiros clientes do private preview observaram acelerações médias de 2 a 4 vezes usando o Photon em cargas de trabalho SQL como:</p><ul><li><strong>Jobs baseados em SQL</strong> - Acelere jobs de produção em grande escala em SQL e DataFrames do Spark.</li><li><strong>Casos de uso de IoT</strong> - Análise de séries temporais mais rápida usando o Photon em comparação com o Spark e o Databricks Runtime tradicional.</li><li><strong>Privacidade e compliance de dados</strong> - Consulte datasets na escala de petabytes para identificar e excluir registros sem duplicar dados com o Delta Lake, Jobs de produção e o Photon.</li><li><strong>Carregando dados em Delta e Parquet</strong> – A E/S vetorizada do Photon acelera o carregamento de dados para tabelas Delta e Parquet, reduzindo o Runtime geral e os custos dos Jobs de Engenharia de Dados.</li></ul><h2>Como o Photon funciona</h2><p>Embora o Photon seja escrito em C++, ele se integra diretamente ao Databricks Runtime e ao Spark. Isso significa que nenhuma alteração de código é necessária para usar o Photon. Vou apresentar um rápido "ciclo de vida de uma consulta" para ajudar você a entender onde o Photon se encaixa.</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="Imagem 2 – Ciclo de vida de uma query do Photon" height="720"></a><figcaption>Imagem 2: ciclo de vida de uma consulta Photon</figcaption></figure><p>Quando um cliente envia uma consulta ou comando para o driver do Spark, ele é analisado e o <a href="https://www.databricks.com/glossary/catalyst-optimizer" rel="noopener" target="_blank">otimizador Catalyst</a> faz a análise, o planejamento e a otimização da mesma forma que faria se o Photon não estivesse envolvido. A única diferença é que, com o Photon, o mecanismo de Runtime faz uma varredura no plano físico e determina quais partes podem ser executadas no Photon. Pequenas modificações podem ser feitas no plano para o Photon, por exemplo, alterar um sort merge join para um hash join, mas a estrutura geral do plano, incluindo a ordem de join, permanecerá a mesma. Como o Photon ainda não oferece suporte a todos os recursos do Spark, uma única query pode ser executada parcialmente no Photon e parcialmente no Spark. Este modelo de execução híbrido é totalmente transparente para o usuário.</p><p>O plano de consulta é então dividido em unidades atômicas de execução distribuída chamadas tarefas, que são executadas em threads nos nós de trabalho, operando em uma partição específica dos dados. É nesse nível que o mecanismo Photon atua. Você pode pensar nisso como a substituição do codegen de estágio inteiro do Spark por uma implementação de mecanismo nativo. A biblioteca Photon é carregada na JVM, e o Spark e o Photon se comunicam via <a href="https://en.wikipedia.org/wiki/Java_Native_Interface" rel="noopener" target="_blank">JNI</a>, passando ponteiros de dados para a memória off-heap. O Photon também se integra ao gerenciador de memória do Spark para spilling coordenado em planos mistos. Tanto o Spark quanto o Photon são configurados para usar memória off-heap e se coordenam sob pressão de memória.</p><p>Com o lançamento da pré-visualização pública, o Photon é compatível com muitos, mas não todos, os tipos de dados, operadores e expressões. Consulte a <a href="https://docs.databricks.com/runtime/photon.html" rel="noopener" target="_blank">visão geral do Photon</a> na documentação para obter mais detalhes.</p>
Dado que nem todas as cargas de trabalho e operadores são compatíveis hoje, você pode estar se perguntando como escolher as cargas de trabalho que podem se beneficiar do Photon e como detectar a presença do Photon no plano de execução. Em resumo, a execução do Photon é bottom-up: ela começa no operador de varredura de tabela e continua subindo no DAG (gráfico acíclico direcionado) até encontrar uma operação que não seja compatível. Nesse ponto, a execução sai do Photon, e o restante das operações será executado sem o Photon.
Se você estiver usando o Photon no Databricks SQL, é fácil ver qual parte de uma query foi executada usando o Photon:
Em geral, quanto maior a porcentagem do tempo de tarefa no Photon, maior será o benefício de desempenho do Photon.

Se você estiver usando o Photon em clusters do Databricks, poderá visualizar a ação do Photon na UI do Spark. A captura de tela a seguir mostra o DAG de detalhes da query. Existem duas indicações do Photon no DAG. Primeiro, os operadores do Photon começam com Photon, como o PhotonGroupingAgg. Em segundo lugar, no DAG, os operadores e estágios do Photon são coloridos de pêssego, enquanto os que não são do Photon são azuis.

Conforme discutido acima, há duas maneiras de usar o Photon:
Depois de criar um SQL endpoint ou cluster habilitado para Photon, você pode tentar executar algumas queries no dataset de táxis de Nova York no Databricks SQL editor ou em um Notebook. Pré-carregamos um trecho e o disponibilizamos como parte de nossos datasets da Databricks.
Primeiro, crie uma nova tabela apontando para os dados existentes com o seguinte snippet de SQL:
Experimente esta query e aproveite a velocidade do Photon!
Medimos o tempo de resposta da query acima com o Photon e um Databricks Runtime convencional em um cluster AWS pré-aquecido com 2 executores i3.2xlarge e um driver i3.2xlarge. Aqui estão os resultados.

Se você quiser saber mais sobre o Photon, também pode assistir à nossa sessão no Data and AI Summit: Velocidade radical para SQL queries: por dentro do Photon. Obrigado pela leitura, aguardamos seu feedback sobre isso!
Acompanhe-nos
Artigos relacionados
Anúncios
June 17, 2021/7 min de leitura
Produto
June 12, 2024/11 min de leitura
Produto
September 12, 2024/8 min de leitura