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.
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
Postar um comentário