Introdução ao MapD: Plataforma de analytics usando GPU

Por: em 17 de julho de 2018

Por Tiago Vinícius R. Costa

Neste post do blog irei falar um pouco sobre a apresentação que realizei no dia 09/05/2018 no QCon São Paulo, um dos principais eventos para desenvolvedores que temos no Brasil. Participei da trilha Engenharia de Dados, que contou com outras excelentes apresentações.
Sob o título “Queries em Big Data: o poder dos bancos de dados baseados em GPU” fiz uma introdução às principais características de bancos de dados que são otimizados para rodar queries em GPU, mas o foco principal da palestra foi uma solução específica, o MapD. É uma plataforma de analytics, constituída por um banco de dados, engine de renderização e ferramenta de visualização, que obtém vantagem do alto poder de processamento paralelo de GPUs para realizar queries complexas e visualizações de métricas, gráficos, dados geolocalizados diante de grandes volumes de dados com um tempo de resposta incrivelmente baixo.
Os slides da apresentação podem ser encontrados neste link: https://pt.slideshare.net/tiagovinicius5015/queries-em-big-data-bancos-de-dados-em-gpu

Por que GPU?

O alto poder de paralelismo das GPUs impressiona. Por exemplo, a Nvidia V100 possui 5120 cores. Máquinas com alto poder computacional na cloud giram em torno de 32, 48 cores, fazendo com que GPUs processem em uma ordem de 100x mais rápido comparado com CPUs. Um ponto interessante para a adoção de GPUs é a redução na quantidade requerida de servidores, já que para determinadas tarefas mesmo distribuídas podem ser completadas através apenas do chamado “brute force horizontal scaling”, onde uma imensa quantidade de máquinas precisam estar em cluster para completar a carga de trabalho. Outro ponto positivo é que os principais provedores em nuvem oferecem soluções em GPU.

GPUs são aplicadas hoje a diversos domínios, não limitados a:

• Computação gráfica;
• Realidade Virtual;
• Veículos autônomos;
• Deep Learning;
• Mineração de criptomoedas;
• Bancos de dados e Analytics Workload.

MapD

O MapD é um banco colunar em memória que carrega a maior quantidade de registros possível na memória na GPU. Consequentemente, processa queries em poucos milissegundos, utilizando o SQL. Operações custosas como where, group by e join são otimizadas para executar nativamente na GPU. A figura 1 mostra de maneira geral como o MapD funciona: como é um banco in-memory first, a tendência é carregar os registros mais recentes na memória da GPU, posteriormente na memória RAM do cluster, caso não haja mais espaço disponível na primeira.

 

Figura 1 – Os registros são mais usados são carregados na memória da GPU. Fonte: http://go3.mapd.com/resources/whitepapers/mapd/lp
 

Além do banco de dados, chamado MapD Core, possui uma engine de renderização e ferramenta de visualização própria, o Immerse.
É possível fazer ingestão com as ferramentas mais conhecidas para ingestão de dados, como Sqoop, Kafka e Spark. Integrações com Anaconda, Tensorflow, Python e R também são suportados, como podemos observar na figura 2, que mostra em alto nível os componentes da arquitetura.

 

Figura 2 – Arquitetura do MapD. Fonte: https://www.mapd.com/platform
 

Exemplos de visualizações com MapD Immerse

A figura 3 mostra um exemplo do uso do MapD para visualização do dataset corridas em Nova York. Este conjunto de dados possui mais de 1 bilhão de registros e além do mapa com concentração das corridas, podemos extrair informações como períodos de maior movimentação, formas de pagamento e destinos mais requisitados.

 

Figura 3 – Visualização do dataset NYC taxi drivers. Fonte: https://www.mapd.com/demos/taxis
 

A figura abaixo mostra um exemplo de visualização de dados coletados em uma quadra de basquete a partir de sensores. Os dados foram coletados através de 13 temporadas da NBA, totalizando mais de 7 milhões de partidas jogadas. Além do heatmap dos arremessos, outras estatísticas também são mostradas, como:

 

Figura 4 – Visualização do NBA Shots. Fonte: https://www.mapd.com/demos/nba/
 

MapD no DataLab

Aqui no DataLab, fizemos testes com a versão MapD Community. Instalamos duas instâncias em duas máquinas, que não estão em cluster, com GPU Nvidia K80. Cada K80 possui 2500 cores e 128GB de RAM.
Os principais usos são para combinações de dados geolocalizados com bases Serasa, além de análise exploratória e descobertas de novas features. De fato, realizar a ingestão de dados e visualizar com queries extremamente rápidas em um dashboard é de grande auxílio nas análises exploratórias que temos feito.

Limitações

Como essas placas Nvidia K80 foram adquiridas para o cluster on-premise, o custo inicial é relativamente alto.
Ao atualizar kernel do sistema operacional, é necessário atualizar os drivers do nvidia-docker, logo é importante pensar em uma automação para minimizar problemas durante a atualização do SO e drivers.
A documentação oficial vem melhorando com o passar do tempo. Contudo, comunidade de desenvolvedores que utilizam o MapD ainda é pequena (principalmente no Brasil), e pode ser necessário entrar em contato com o suporte do MapD para resolução de problemas.

Considerações Finais

Sempre é essencial avaliar se o caso de uso de negócio precisa de fato utilizar a tecnologia. Além disso, o mercado de bancos de dados em GPU precisa amadurecer mais. A adoção ainda é pequena, considerando outras tecnologias de bancos de dados.
Enxergamos que MapD é extremamente interessante para visualização de mapas, com interações com consultas em tempo real, pois até pela arquitetura, praticamente não existe latência de queries. A versão 4.0 que será lançada em breve, corrobora para esta visão.
Outro ponto importante é a facilidade de integração com componentes que fazem parte do ecossistema Hadoop, provendo uma interface analítica poderosa.
Por fim, é necessário avaliar os custos de implantação da tecnologia. Se as máquinas estão em um data center próprio, terá que realizar aquisição de GPUs que sejam suportadas pelo MapD. Por outro lado, se for rodar em cloud, pode-se reduzir custo com instâncias reservadas.

Referências

[1]https://www.nextplatform.com/2016/09/22/pushing-database-scalability-gpus/
[2]https://www.serasaexperian.com.br/p/inovacao-datalab/polis
[3]https://www.nextplatform.com/2016/03/30/mapd-gpu-database-looks-forward-heftier-iron/
[4]https://info.sqream.com/hubfs/pdf/SQream%20DB%20Technical%20Whitepaper.pdf
[5]https://www.zdnet.com/article/gpu-databases-are-coming-of-age/
[6]https://www.kdnuggets.com/2017/08/rise-gpu-databases.html
[7]https://hackernoon.com/which-gpu-database-is-right-for-me-6ceef6a17505
[8]https://wikibon.com/next-kinetica-mapd-sqream-gpu-database-vendors/
[9]https://www.mapd.com/demos
[10]Mizel & Biery. Introduction to GPU for Data Analytics
[11]https://www.nextplatform.com/2016/09/22/pushing-database-scalability-gpus/
[12]https://www.safaribooksonline.com/library/view/strata-data-conference/9781491976326/video316575.html
[13]https://www.blazegraph.com/whitepapers/Blazegraph-gpu_InDetail_BloorResearch.pdf
[14]https://www.youtube.com/watch?v=XkYH5Drj4Iw&t=55s

17 de julho de 2018