Bancos de Dados NoSQL | HBase

Primeiramente vamos a definição de banco de dados NoSQL, é um quebra de paradigma pois  a informação, toda a informação estará agrupada no mesmo registro, sim no mesmo registro, neste modelo de banco de dados não existe o relacionamento entre várias tabelas para formar uma informação.

HBase é um banco de dados distribuído open-source criado a partir do Google BigTable e escrito em Java.

Por que usar HBase?

Qual tipo de dado pode ser armazenado?

Entidade ou dado de entidade é a informação sobre o estado atual, geralmente leitura e escrita em real time

Exemplos:

>  Pontos de Geolocalização
> Contagem e métricas de clicks
> Receber dados de diferentes sensores

Evento ou dados de eventos são séries temporais, são pontos sucessivamente salvos entre intervalos de tempo, geralmente escrita em real time, algumas combinações de leitura real time e batch

Exemplos:

>  Dados de sensores no tempo
>  Dados históricos de ações na bolsa de valores
>  Métricas históricas
>  Series temporais de clicks

Por que devem ser armazenados?

Tipos de questões que podem ser feitas para esses dados?

>  Casos de uso operacionais
>  Casos de uso Analíticos

Questões baseadas em evento

>  Me dê tudo sobre a entidade E
>  Me dê o mais recente evento V sobre a entidade E
>  Me dê os n eventos V mais recentes sobre a entidade E
>  Mê todos os eventos V sobre a entidade E entre o período [ t1,t2 ]

Questões baseadas em tempo e evento

>  Me dê uma visão agregada de cada entidade entre o período [ t1,t2 ]
>  Me dê uma visão agregada de cada intervalo para uma entidade E
>  Busque todos os eventos V que atendam a um determinado critério

Como os dados podem ser acessados?

>  Real time e Batch
>  Aleatório (Random) e Sequencial

HBase – Arquitetura

Tabela – Modelo Lógico

ModeloLogico

Temos os dados de contato e foto do perfil na mesma Column Family

ModeloLogico2

Divisão da Tabela em Regions

DivisaoTabela

Regions gerenciada pelos RegionServers

RegionServer

Vamos no detalhe

  1. HBase escalonado de forma linear, exige de todas as tabelas uma chave primária denominada Row Key ou UserID
  2. O espaço da chave está dividida em blocos sequenciais distribuídas em uma região.
  3. RegionServers pode ter uma ou mais regiões, a carga é espalhada uniformemente em todo o cluster.
  4. Se as chaves dentro de uma região são acessados ​​freqüentemente, HBase pode subdividir ainda mais a região, dividindo-o automaticamente, de modo que sharding manual de dados não é necessário.
  5. Servidores tais como Zookeeper e HMaster disponibilizam a informação sobre a topologia de cluster disponíveis para os clientes
  6. Os clientes se conectam nos clusters e baixam uma lista de RegionServers, as regiões contidas dentro desses RegionServers e os intervalos de chaves hospedados pelas regiões.
  7. Os clientes sabem exatamente onde qualquer peça de dados está no HBase e pode contactar o RegionServer diretamente, sem qualquer necessidade de um coordenador central.
  8. Os RegionServers incluem um memstore para armazenar em cache linhas freqüentemente acessados ​​na memória. Opcionalmente, os usuários podem armazenar linhas off-heap, gigabytes de armazenamento em cache de dados, minimizando pausas para coleta de lixo.

Tipos de Tabelas

Tabela userspace (dados)

>  Tabelas criadas por meio de API ou hbase shell
>  Tabelas que são criadas e armazenam os dados (registros)

Tabelas Catalog (metadados)

>  Tipo especial de tabela, é acessada somente pelo HBase.
>  Gerencia a localização dos RegionServers e Regions.
>  Essas tabelas nunca são divididas em Regions.
>  Nomes das tabelas:
–  .ROOT – lista a localização da tabela .META
–  .META – lista os Regions e as suas respectivas localizações

Buscar Regions – acesso ao dado (resumo)

Etapas para acessar os dados:

1) Cliente se comunica com o Zookeeper para receber o servidor (hostname) que possui a tabela -ROOT-.

2) Com essa informação, o cliente pode se comunicar com o servidor que possui a tabela -ROOT- que sabe onde está armazenada a tabela .META.

3) Acessar a tabela .META. para o cliente recebe a informação de qual Region e
RegionServer possuem a row key.

4) Cliente realiza acesso ao RegionServer onde está a Region que possui a row  key. Todas essas informações de localização dos metadados e dados são armazenadas em cache no cliente.

Regions

Arquitetura – HBase, HDFS e Zookeeper

Arquitetura

Arquitetura – HBase, HDFS e Zookeeper

Arquitetura2

Arquitetura – RegionServer

RegionServer2

Arquitetura – RegionServer, Tabela, HRegion, HStore e StorageFile

Arquitetura3

Estrutura do HFile

O HFile tem o único objetivo de armazenar os dados do Hbase de forma eficiente. Ele é imutável e contém uma quantidade variável de blocos (os blocos fixos são file info e trailer blocks).

O trailer possui os ponteiros para os blocks. O index block armazena os offsets dos dados e metadados dos blocks. Block Size padrão é 64 KBs esse tamanho pode variar entre 8KB e 1MB. Blocos menores são melhores para acesso aleatório e blocos maiores para acesso sequencial

Estrutura do HFile

Estrutura

Distribuição dos HFiles nos blocos do HDFS

Distribuicao

Formato tabela lógica e física

>  O HBase possui dois tipos de estruturas de chave: row key e column key.
>  A column key é composta pela Column Family e Column Qualifier (coluna).
>  A row key permite que seja possível acessar todas as colunas em uma única row logica.
>  Tabela com formato lógico: Row, Column Family (CF), Column Qualifier (col).
>  O formato lógico não é igual ao formato físico da tabela.
>  Todos os valores são armazenados fisicamente com todas as coordenadas              – Row key, Column Family, Column Qualifier e timestamp

Formato do KeyValue (par de chave-valor)Formato

>  O processo de Fold divide cada célula de cada linha (row) em diferentes StoreFiles, um por Column Family. Em outras palavras, no disco serão armazenados todas as células de uma única CF em um StoreFile, e células de outra CF será armazenada em um StoreFile diferente.
>  Versions (versões do dado baseado em timestamp) são linhas (rows) diferentes no StoreFile (formato físico da tabela).
>  Os pares de chaves-valores (KeysValues) são ordenados primeiro por row key, então por column key e por último por timestamp.

Abaixo uma imagem para consolidar a explicação!

TabelaLogica

Fluxo de escrita dos dados do HBase

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s