O que é o HBASE ?

   O HBASE é um banco de dados do tipo NoSQL, não aderente ao modelo relacional, que não provê acesso SQL aos dados armazenados. Os bancos de dados que estão sob este rótulo NoSQL não podem exigir esquemas de tabela fixa e, geralmente, não suportam instruções e operações de junção SQL, assim como não dispõem de colunas com tipos de dados definidos, triggers, etc. Como exemplos de NoSQL, além do HBASE, temos o MongoDB, o Amazon SimpleDB e o Oracle NoSQL.



   O HBASE é orientado a colunas, sendo muitas vezes chamado de “Hadoop Database”, permitindo operações CRUD em tempo real. Em 2010 deixou de ser um sub-projeto do Hadoop, tornando-se um projeto independente (http://hbase.apache.org/). Assim como o Hadoop, roda em plataforma clusterizada e foi projetado para suportar tabelas com bilhões de linhas.



   Sua melhor aplicabilidade é quando temos uma quantidade de dados muito grande, aproveitando assim o potencial do cluster Hadoop / HDFS. Com bases de dados que utilizem 5 nós ou mais o HBASE realmente mostra o seu potencial. O HBASE também é muito bom quando existe uma variabilidade nos schemas (ex. linhas diferentes), mas não recomendamos o uso para substituir aplicações transacionais baseadas em RDBMs.



   Com o HBASE podemos realizar o “sharding”, que é o particionamento de grandes bancos de dados em bancos menores, distribuídos em servidores diferentes, mais facilmente gerenciáveis, também chamados de “data shards”. “sharding” é equivalente ao Particionamento Horizontal.



   O HBASE emprega Master Servers para gerenciar todo o cluster e Region Servers para servir uma ou mais regiões. Os nós são replicados e balanceados para garantir alta escalabilidade, rápido failover e balanceamento de carga para ótimo acesso aos dados.



   No HBASE os dados são armazenados em Tabelas, que por sua vez têm Linhas, compostas de Colunas, que podem ser agrupadas em Famílias de Colunas. Uma tabela pode estar particionada em diversos servidores de região (Region Servers). Podemos dizer que as Regiões são os elementos básicos para a alta disponibilidade e distribuição das Tabelas e são compostas de “Stores” para Famílias e Colunas. Cada “Store” tem uma memstore , que guarda modificações em mémoria para os pares de chaves e valores, e 0 a N StoreFiles (HFiles). Para cada Região temos uma chave inicial e uma chave final. Determinar o tamanho de um servidor de região é uma tarefa que requer conhecimento do padrão de acesso versus quantidade de dados acessada.



   Os dados armazenados como pares de chaves e valores (“key-value pairs”), são gravados em arquivos HFiles/StoreFiles, sendo salvos normalmente no HDFS em um nó particular. Os arquivos HFile não suportam remoção de pares de chaves. Quando um dado é adicionado ele é gravado no log WAL (Write Ahead Log) e em memória (memstore). Quando a quantidade de dados in-memory excede o valor máximo configurado, é realizado o flush de memória para HFile.



   O HBASE utiliza o Zookeeper (zookeeper.apache.org) para gerenciar todos os Region Servers. O Zookeeper é um serviço centralizado para manter informações de configuração, nomeação de servidores, provimento de serviços de grupos e provimento de sincronização distribuída.


  Podemos acessar os dados armazenados no HBASE através de uma API Java, por linha de comando (HBASE Shell) , Python, Avro, Rest, Thrift, etc. Como o HBASE é todo construído em Java, a maneira mais rápida de acessá-lo é usando a API Java. Esta API permite criar tabelas, fazer Put, Get, Scan, Delete, etc.

  Além deste blog tenho selecionado alguns artigos interessantes no Scoop em:

http://www.scoop.it/t/big-data-brazil   

Até o próximo post.










Comentários

Postagens mais visitadas deste blog

Hive, o que é ?

O que é o HDFS ?