Princípios básicos do HBase
O HBase realiza o armazenamento de dados. O HBase é um sistema de armazenamento distribuído de código aberto, orientado a colunas, adequado para armazenar grandes quantidades de dados não estruturados ou semi estruturados. Possui alta confiabilidade, alto desempenho e escalabilidade flexível e suporta leitura/gravação de dados em tempo real. Para obter mais informações sobre o HBase, https://hbase.apache.org/.
As características típicas de uma tabela armazenada no HBase são as seguintes:
- Tabela grande (BigTable): uma tabela contém centenas de milhões de linhas e milhões de colunas.
- Orientado à coluna: armazenamento orientado a colunas, recuperação e controle de permissão
- Esparso: colunas nulas na tabela não ocupam nenhum espaço de armazenamento.
O MRS HBase suporta indexação secundária para permitir que índices sejam criados para valores de coluna, de modo que os dados possam ser filtrados por coluna usando APIs do HBase nativo.
Arquitetura do HBase
Um cluster do HBase consiste em processos de HMaster ativo e em espera e vários processos do RegionServer.

Módulo |
Descrição |
---|---|
Master |
Master também é chamado de HMaster. No modo HA, o HMaster consiste em um HMaster ativo e um HMaster em espera.
|
Client |
Client se comunica com o Master para gerenciamento e com o RegionServer para proteção de dados usando Chamada de procedimento remoto mecanismo (RPC) do HBase. |
RegionServer |
O RegionServer fornece serviços de leitura e gravação de dados de tabela como uma unidade de processamento e computação de dados no HBase. O RegionServer é implementado com DataNodes de clusters do HDFS para armazenar dados. |
Cluster do ZooKeeper |
O ZooKeeper fornece serviços de coordenação distribuídos para processos em clusters do HBase. Cada RegionServer é registrado no ZooKeeper para que o Mestre ativo possa obter o status de saúde de cada RegionServer. |
Cluster do HDFS |
O HDFS fornece serviços de armazenamento de arquivos altamente confiáveis para o HBase. Todos os dados do HBase são armazenados no HDFS. |
Princípios do HBase
- Modelo de dados do HBase
O HBase armazena dados em tabelas, conforme mostrado na Figura 2. Os dados em uma tabela são divididos em várias Regions, que são alocadas pelo Master para RegionServers para gerenciamento.
Cada Region contém dados dentro de um intervalo de RowKey. Uma tabela de dados do HBase contém apenas uma região no início. À medida que o número de dados aumenta e atinge o limite superior da capacidade da Region, a Region é dividida em duas Regiões. Você pode definir o intervalo de RowKey de uma Region ao criar uma tabela ou definir o tamanho da Region no arquivo de configuração.
Tabela 2 Conceitos Módulo
Descrição
RowKey
Semelhante à chave primária em uma tabela de relacionamento, que é o ID exclusivo dos dados em cada linha. Uma RowKey pode ser uma cadeia, inteiro ou binário. Todos os registros são armazenados depois de serem classificados por RowKey.
Timestamp
O timestamp de uma operação de dados. Os dados podem ser especificados com versões diferentes por carimbo de data/hora. Os dados de diferentes versões em cada cell são armazenados por tempo em ordem decrescente.
Cell
Unidade mínima de armazenamento de HBase, consistindo de chaves e valores. Uma chave consiste em seis campos, a saber namely row, column family, column qualifier, timestamp, type e MVCC version. Os valores são os objetos de dados binários.
Column Family
Uma ou várias column families horizontais formam uma tabela. Uma column family pode consistir em várias columns aleatórias. Uma column é um rótulo sob uma column family, que pode ser adicionado conforme necessário quando os dados são gravados. A column family suporta expansão dinâmica para que o número e o tipo de columns não precisem ser predefinidos. Columns de uma tabela no HBase são esparsamente distribuídas. O número e o tipo de columns em linhas diferentes podem ser diferentes. Cada column family tem o tempo de vida independente (TTL). Você pode bloquear apenas a linha. As operações na linha de uma column family são as mesmas que as de outras linhas.
Column
Semelhante aos bancos de dados tradicionais, as tabelas HBase também usam columns para armazenar dados do mesmo tipo.
- Armazenamento de dados do RegionServer
O RegionServer gerencia as regiões alocadas pelo HMaster. Figura 3 mostra a estrutura de armazenamento de dados do RegionServer.
Tabela 3 lista cada componente da Region descrita em Figura 3.
Tabela 3 Descrição da estrutura da Region Módulo
Descrição
Store
Uma Region consiste em um ou vários Stores. Cada Store mapeia uma column family em Figura 2.
MemStore
Um Store contém um MemStore. O MemStore armazena em cache os dados inseridos em uma Region pelo cliente. Quando a capacidade do MemStore atinge o limite superior, o RegionServer libera os dados do MemStore para o HDFS.
StoreFile
Os dados liberados no HDFS são armazenados como um StoreFile no HDFS. À medida que mais dados são inseridos, vários StoreFiles são gerados em um Store. Quando o número de StoreFiles atinge o limite superior, RegionServer mescla vários StoreFiles em um StoreFile grande.
HFile
HFile define o formato de armazenamento de StoreFiles em um sistema de arquivos. HFile é a implementação subjacente do StoreFile.
HLog
HLogs evitam a perda de dados quando o RegionServer está com defeito. Várias Regions em um RegionServer compartilham o mesmo HLog.
- Tabela de metadados
A tabela de metadados é uma tabela do HBase especial, que é usada pelo cliente para localizar uma região. A tabela de metadados inclui hbase:meta para registrar informações de região de tabelas de usuário, como o local da região e início e fim de RowKey.
Figura 4 mostra a relação de mapeamento entre tabelas de metadados e tabelas de usuário.
- Processo de operação de dados
Figura 5 mostra o processo de operação de dados do HBase.
- Quando você adiciona, exclui, modifica e consulta dados do HBase, o cliente do HBase primeiro se conecta a ZooKeeper para obter informações sobre o RegionServer onde a tabela hbase:meta está localizada. Se você modificar o namespace, como criar e excluir uma tabela, precisará acessar o HMaster para atualizar as meta informações.
- O cliente do HBase se conecta à RegionServer onde a região da tabela hbase:meta está localizada e obtém o local RegionServer onde a região da tabela de usuário reside.
- Em seguida, o cliente do HBase se conecta à RegionServer onde a região da tabela de usuários está localizada e emite um comando de operação de dados para o RegionServer. O RegionServer executa o comando.
Para melhorar a eficiência do processamento de dados, o cliente HBase armazena em cache as informações de região da tabela hbase:meta e da tabela de usuário. Quando uma aplicação inicia uma segunda operação de dados, o cliente do HBase consulta as informações de região da memória. Se nenhuma correspondência for encontrada na memória, o cliente do HBase executará as operações anteriores para obter informações de região.