HAWQ

O que é o HAWQ ( Pivotal )  ?


As primeiras soluções de Big Data utilizavam basicamente o framework MapReduce, baseado em Java, mas logo foi verificado que existia um número muito maior de analistas, desenvolvedores e programadores com conhecimento de SQL que não conseguiam trabalhar com Java e com o MapReduce.  A partir desta demanda surgiu o Hive, que apesar de ser muito parecido com um ambiente de banco de dados tradicional, tinha uma série de restrições de performance, operações, transações, etc, mas que utiliza o ambiente de computação distribuída do Hadoop.. Se quiser saber mais sobre o Hive consulte o post anterior ( http://bigdatabrazil.blogspot.com.br/2013/07/hive.html ).


Visando preencher este nicho de demanda, de computação distribuída, com suporte à transações que usassem SQL, grandes empresas de tecnologia, como por exemplo a Pivotal (EMC), começaram a desenvolver plataformas de softwares que atendessem a estes requisitos e utilizassem o ambiente Hadoop. 


O HAWQ, da empresa Pivotal (EMC), é um engenho de queries SQL que utiliza processamento massivo em paralelo (MPP), otimizado para a análise de grande quantidades de dados em clusters com suporte completo à transações.


Na sua arquitetura possui um componente MASTER que é um ponto de conexão dos clientes, recebe as queries e as distribui para processamento pelos SEGMENTOS.  O catálogo global está localizado no MASTER. Para maior segurança e disponibilidade você pode ter um “Mirror” do MASTER.


O HAWQ quebra queries complexas em tarefas menores e as distribui entre as unidades de processamento disponíveis para execução em paralelo no cluster de processamento Hadoop.  A unidade básica de processamento paralelo é chamada de SEGMENTO e múltiplas instâncias de SEGMENTO agem em paralelo para formar um sistema de processamento de queries em paralelo.

O HAWQ é baseado no sistema distribuído de armazenamento do Hadoop ( HDFS ) e desta forma tem alta disponibilidade e tolerância a falhas. Os segmentos não guardam metadados e também não armazenam dados no storage local. Todos os dados são armazenados no HDFS.





 



No caso dos SEGMENTOS, caso um deles falhe, o trabalho é automaticamente transferido para outro que esteja on-line.

Tal como nos bancos de dados, o HAWQ produz um plano da query, que é muito similar ao plano de uma query de banco de dados, com operações como table scan, join, aggregation, etc, mas com um novo componente chamado de Motion.  A operação Motion move tuplas de resultados entre SEGMENTOS.



Diversos processos são criados durante a execução das queries, sendo processos do tipo Query Dispatcher no MASTER e Query Executor nos SEGMENTOS.




O HAWQ é baseado no PostgreSQL e adere à estrutura e sintaxe SQL usada no mesmo, com pequenas exceções. Podem ser utilizadas funções, expressões agregadas e funções definidas pelo usuário (UDF).

As conexões ao HAWQ são configuradas em um arquivo no sistema operacional chamado pg_hba.conf.

Um sistema HAWQ pode ser expandido, acrescentando novo hardware, novos SEGMENTOS ou simplesmente redistribuindo as tabelas, usando o comando gpexpand.

O HAWQ também suporta a biblioteca MADlib, que é uma biblioteca open-source para realização de analíticos usando o engenho de banco de dados (in-database analytics). A MADlib provê implementações de métodos matemáticos, estatísticos e de machine learnng para análise de dados estruturados e não estruturados.

Comparando com o Hive, um caso de uso executado no HAWQ pode ser até 100 vezes mais rápido, o que torna o HAWQ um competidor a ser considerado durante o processo de seleção de ferramentas para ambientes Big Data.

Para mais informações sobre o HAWQ acesse gopivotal.com.

Até o próximo post.



Comentários

Postagens mais visitadas deste blog

Hive, o que é ?

O que é o HDFS ?

O que é o HBASE ?