Presto – Consultas SQL em ambiente distribuído

Por: em 11 de outubro de 2018

Em engenharia de dados, constantemente estamos avaliando ferramentas que facilitem a exploração de dados, consultas analíticas e até mesmo Insights.

Neste post do blog, pretendo mostrar uma das ferramentas criada pelo Facebook com o intuito de resolver problemas de latência nas pesquisas com linguagem SQL.

Presto é um sistema distribuído que roda em um cluster de máquinas. Para entender como funciona, temos que explicar 2 tipos de serviços na arquitetura que o Presto possui: o serviço Coordinator e serviço Worker. Pelos nomes, já dá para ter uma ideia de como eles funcionam.

O Coordinator é considerado o cérebro do Presto pois é neste serviço que as queries de usuários são analisadas e gerenciadas. Já o serviço Worker é responsável pelas tarefas que processam os dados pesquisados.

A Instalação é bem simples e está detalhada no site https://prestodb.io/docs/current/installation.html

Uma instalação de um cluster Presto contempla no mínimo 1 Coordinator e vários workers.

Figura 1 – Arquitetura básica de um cluster Presto acessando Hive/HDFS – Fonte: https://prestodb.io/

 

Várias fontes de dados

Uma das vantagens de utilizar o presto, é a possibilidade de “conectar” diversas fontes de dados em diversas tecnologias, tais como Hive, Cassandra, bancos de dados relacionais como Oracle e Teradata, entre outras.

Interface Web

Presto disponibiliza uma página web para monitoração e gerenciamento de queries executadas pelos times de engenharia de dados e ciência de dados.

Figura 2- Presto Admin Web Interface

Nesta instalação, estamos utilizando 1 coordinator e 4 workers.

 

Interface Client

Para realizar consultas no Presto, temos que usar o Presto CLI, na qual provê uma interface semelhante a de um terminal Linux. Veja o exemplo:

Figura 3 – Presto Client Interface

 

Figura 4 – Fazendo um “Count” em uma tabela

 

Uma das características do Presto, é a compatibilidade com o padrão SQL ANSI, muito difundido em diversos bancos de dados existentes.

Conclusão

Nas atividades preparatórias e exploratórias do universo Big Data, o Presto facilita bastante a manipulação de grandes bases de dados.

No DataLab, inicialmente adotamos o Presto com a conexão Hive para facilitar a manipulação de dados nos estágios iniciais de um processo de Insight.

Com certeza iremos explorar novas opções de conexão para aproveitarmos ainda mais as características do Presto.

Referências:

https://prestodb.io/

https://www.facebook.com/notes/facebook-engineering/presto-interacting-with-petabytes-of-data-at-facebook/10151786197628920/

https://pdfs.semanticscholar.org/presentation/4414/e073e5f2999389c11541cfc134ef76d02686.pdf

https://github.com/prestodb/presto

https://prestodb.io/docs/current/

11 de outubro de 2018