HAWQ
O que é o HAWQ ( Pivotal ) ?
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.
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.
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
Postar um comentário