Arquitetura HBase: modelo de dados HBase e mecanismo de leitura / gravação HBase



Este blog sobre Arquitetura HBase explica o Modelo de Dados HBase e fornece uma visão da Arquitetura HBase. Também explica os diferentes mecanismos do HBase.

Arquitetura HBase

No meu blog anterior sobre Tutorial HBase , Expliquei o que é HBase e seus recursos. Também mencionei o estudo de caso do Facebook Messenger para ajudá-lo a se conectar melhor. Agora avançando em nosso , Vou explicar o modelo de dados da arquitetura HBase e HBase.Antes de prosseguir, você também deve saber que o HBase é um conceito importante que constitui uma parte integrante do para certificação Big Data Hadoop.

Os tópicos importantes que irei abordar neste blog de arquitetura HBase são:





Vamos primeiro entender o modelo de dados do HBase. Ele ajuda o HBase em uma leitura / gravação e pesquisas mais rápidas.



Arquitetura HBase: Modelo de Dados HBase

Como sabemos, o HBase é um banco de dados NoSQL orientado a colunas. Embora seja semelhante a um banco de dados relacional que contém linhas e colunas, não é um banco de dados relacional. Os bancos de dados relacionais são orientados por linhas, enquanto o HBase é orientado por colunas. Então, vamos primeiro entender a diferença entre bancos de dados orientados a colunas e orientados a linhas:

Bancos de dados orientados por linha e por colunas:

  • Os bancos de dados orientados por linha armazenam registros de tabela em uma seqüência de linhas. Considerando que bancos de dados orientados a colunasarmazene os registros da tabela em uma sequência de colunas, ou seja, as entradas em uma coluna são armazenadas em locais contíguos nos discos.

Para melhor entendê-lo, vamos dar um exemplo e considerar a tabela abaixo.



Tabela - Arquitetura HBase - Edureka

Se esta tabela estiver armazenada em um banco de dados orientado a linhas. Ele armazenará os registros conforme mostrado abaixo:

1,Paul Walker,NOS,231,Gallant,

2, Vin Diesel,Brasil,520,Mustang

Em bancos de dados orientados a linhas, os dados são armazenados com base em linhas ou tuplas, como você pode ver acima.

Enquanto os bancos de dados orientados a colunas armazenam esses dados como:

1,2, Paul Walker,Vin Diesel, NOS,Brasil, 231,520, Gallant,Mustang

Em um banco de dados orientado a coluna, todos os valores da coluna são armazenados juntos, como os valores da primeira coluna serão armazenados juntos, então os valores da segunda coluna serão armazenados juntos e os dados em outras colunas serão armazenados de maneira semelhante.

  • Quando a quantidade de dados é muito grande, como em termos de petabytes ou exabytes, usamos a abordagem orientada a colunas, porque os dados de uma única coluna são armazenados juntos e podem ser acessados ​​mais rapidamente.
  • Enquanto a abordagem orientada por linha lida comparativamente com menos número de linhas e colunas de forma eficiente, o banco de dados orientado por linha armazena dados em um formato estruturado.
  • Quando precisamos processar e analisar um grande conjunto de dados semiestruturados ou não estruturados, usamos a abordagem orientada a colunas. Como aplicativos que lidam com Processamento analítico online como mineração de dados, armazenamento de dados, aplicativos, incluindo análises, etc.
  • Enquanto que, Processamento Transacional Online como os domínios bancários e financeiros, que manipulam dados estruturados e exigem propriedades transacionais (propriedades ACID), usam uma abordagem orientada por linha.

As tabelas do HBase têm os seguintes componentes, mostrados na imagem abaixo:

java como terminar o programa

  • Mesas : Os dados são armazenados em formato de tabela no HBase. Mas aqui as tabelas estão em formato orientado a colunas.
  • Linha Chave : As teclas de linha são usadas para pesquisar registros, o que torna as pesquisas mais rápidas. Você ficaria curioso para saber como? Vou explicar na parte de arquitetura avançando neste blog.
  • Coluna Famílias : Várias colunas são combinadas em uma família de colunas. Essas famílias de colunas são armazenadas juntas, o que torna o processo de busca mais rápido porque os dados pertencentes à mesma família de colunas podem ser acessados ​​juntos em uma única busca.
  • Coluna Qualificadores : O nome de cada coluna é conhecido como seu qualificador de coluna.
  • Célula : Os dados são armazenados em células. Os dados são despejados em células que são especificamente identificadas por rowkey e qualificadores de coluna.
  • Timestamp : Timestamp é uma combinação de data e hora. Sempre que os dados são armazenados, eles são armazenados com seu carimbo de data / hora. Isso facilita a pesquisa de uma versão específica dos dados.

De uma forma mais simples e compreensiva, podemos dizer que o HBase consiste em:

  • Conjunto de mesas
  • Cada tabela com famílias de colunas e linhas
  • A chave de linha atua como uma chave primária no HBase.
  • Qualquer acesso às tabelas HBase usa esta chave primária
  • Cada qualificador de coluna presente no HBase denota um atributo correspondente ao objeto que reside na célula.

Agora que você conhece o modelo de dados HBase, vamos ver como este modelo de dados se alinha com a arquitetura HBase e o torna adequado para grande armazenamento e processamento mais rápido.

Arquitetura HBase: Componentes da Arquitetura HBase

HBase tem três componentes principais, ou seja, Servidor HMaster , Servidor de região HBase, regiões e Funcionário do zoológico .

A figura abaixo explica a hierarquia da arquitetura HBase. Falaremos sobre cada um deles individualmente.


Agora, antes de ir para o HMaster, entenderemos as regiões, pois todos esses servidores (HMaster, Region Server, Zookeeper) são colocados para coordenar e gerenciar regiões e realizar várias operações dentro das regiões. Você ficaria curioso para saber o que são regiões e por que são tão importantes?

Arquitetura HBase: Região

Uma região contém todas as linhas entre a chave de início e a chave de fim atribuídas a essa região. As tabelas do HBase podem ser divididas em várias regiões de forma que todas as colunas de uma família de colunas sejam armazenadas em uma região. Cada região contém as linhas em uma ordem de classificação.

Muitas regiões são atribuídas a um Servidor Regional , que é responsável por manipular, gerenciar e executar operações de leitura e gravação nesse conjunto de regiões.

Portanto, concluindo de forma mais simples:

  • Uma tabela pode ser dividida em várias regiões. Uma região é um intervalo classificado de linhas que armazenam dados entre uma chave inicial e uma chave final.
  • Uma região tem um tamanho padrão de 256 MB, que pode ser configurado de acordo com a necessidade.
  • Um grupo de regiões é servido aos clientes por um servidor de região.
  • Um servidor de região pode servir aproximadamente 1000 regiões para o cliente.

Agora, começando do topo da hierarquia, primeiro gostaria de explicar sobre o HMaster Server, que atua de forma semelhante como um NameNode em HDFS . Em seguida, descendo na hierarquia, conduzirei você pelo ZooKeeper e pelo Region Server.

Arquitetura HBase: HMaster

Como na imagem abaixo, você pode ver que o HMaster lida com uma coleção de Region Server que reside no DataNode. Vamos entender como o HMaster faz isso.

  • O HBase HMaster realiza operações DDL (criar e excluir tabelas) e atribui regiões aos servidores de região, como você pode ver na imagem acima.
  • Ele coordena e gerencia o Region Server (semelhante ao NameNode gerencia DataNode no HDFS).
  • Ele atribui regiões aos Servidores Regionais na inicialização e reatribui regiões aos Servidores Regionais durante a recuperação e o balanceamento de carga.
  • Ele monitora todas as instâncias do Region Server no cluster (com a ajuda do Zookeeper) e realiza atividades de recuperação sempre que qualquer Region Server está desativado.
  • Ele fornece uma interface para criar, excluir e atualizar tabelas.

O HBase possui um ambiente amplo e distribuído onde o HMaster sozinho não é suficiente para gerenciar tudo. Então, você deve estar se perguntando o que ajuda o HMaster a gerenciar esse ambiente enorme? É aí que o ZooKeeper entra em cena. Depois de entendermos como o HMaster gerencia o ambiente HBase, entenderemos como o Zookeeper ajuda o HMaster no gerenciamento do ambiente.

Arquitetura HBase: ZooKeeper - o coordenador

A imagem abaixo explica o mecanismo de coordenação do ZooKeeper.

  • O Zookeeper atua como um coordenador dentro do ambiente distribuído do HBase. Ajuda a manter o estado do servidor dentro do cluster, comunicando-se por meio de sessões.
  • Cada servidor de região junto com o servidor HMaster envia pulsação contínua em intervalos regulares para o Zookeeper e verifica qual servidor está ativo e disponível conforme mencionado na imagem acima. Ele também fornece notificações de falha do servidor para que medidas de recuperação possam ser executadas.
  • Referindo-se à imagem acima você pode ver, há um servidor inativo, que atua como um backup para o servidor ativo. Se o servidor ativo falhar, ele virá para o resgate.
  • O HMaster ativo envia batimentos cardíacos ao Zookeeper enquanto o HMaster inativo escuta a notificação enviada pelo HMaster ativo. Se o HMaster ativo falhar em enviar uma pulsação, a sessão será excluída e o HMaster inativo se tornará ativo.
  • Se um servidor de região falhar em enviar uma pulsação, a sessão expirará e todos os ouvintes serão notificados sobre isso. Em seguida, o HMaster executa as ações de recuperação adequadas que discutiremos mais tarde neste blog.
  • Zookeeper também mantém o caminho do servidor .META, o que ajuda qualquer cliente na busca por qualquer região. O Cliente primeiro tem que verificar com o .META Server a qual Region Server uma região pertence, e ele obtém o caminho desse Region Server.

Como falei sobre o .META Server, deixe-me primeiro explicar o que é .META Server? Assim, você pode relacionar facilmente o trabalho do ZooKeeper e do .META Server. Posteriormente, quando explicarei a você o mecanismo de pesquisa do HBase neste blog, explicarei como esses dois funcionam em colaboração.

Arquitetura HBase: Meta Tabela

  • A tabela META é uma tabela de catálogo especial do HBase. Ele mantém uma lista de todos os servidores de regiões no sistema de armazenamento HBase, como você pode ver na imagem acima.
  • Olhando para a figura você pode ver, .META arquivo mantém a tabela na forma de chaves e valores. A chave representa a chave inicial da região e seu id, enquanto o valor contém o caminho do servidor da região.

Como já discuti, o Region Server e suas funções enquanto eu estava explicando a vocês as Regiões, agora estamos descendo na hierarquia e vou me concentrar no componente do Region Server e suas funções. Posteriormente, irei discutir o mecanismo de pesquisa, leitura, escrita e entender como todos esses componentes funcionam juntos.

Arquitetura HBase: Componentes do servidor regional

A imagem abaixo mostra os componentes de um servidor regional. Agora, vou discuti-los separadamente.

Um servidor de região mantém várias regiões em execução no topo de . Os componentes de um servidor regional são:

  • WAL: Como você pode concluir pela imagem acima, Write Ahead Log (WAL) é um arquivo anexado a todos os Servidores de Região dentro do ambiente distribuído. O WAL armazena os novos dados que não foram persistidos ou comprometidos com o armazenamento permanente. É utilizado em caso de falha na recuperação dos conjuntos de dados.
  • Bloco de Cache: Na imagem acima, é claramente visível que o Block Cache reside na parte superior do Region Server. Ele armazena os dados lidos com freqüência na memória. Se os dados no BlockCache forem usados ​​menos recentemente, então esses dados serão removidos do BlockCache.
  • MemStore: É o cache de gravação. Ele armazena todos os dados recebidos antes de confirmá-los no disco ou na memória permanente. Há um MemStore para cada família de colunas em uma região. Como você pode ver na imagem, existem vários MemStores para uma região porque cada região contém vários grupos de colunas. Os dados são classificados em ordem lexicográfica antes de enviá-los ao disco.
  • HFile: Na figura acima, você pode ver que o HFile está armazenado no HDFS. Assim, ele armazena as células reais no disco. MemStore confirma os dados para HFile quando o tamanho do MemStore excede.

Agora que conhecemos os componentes principais e secundários da Arquitetura do HBase, explicarei o mecanismo e seu esforço colaborativo nisso. Quer seja lendo ou escrevendo, primeiro precisamos pesquisar onde ler ou onde escrever um arquivo. Então, vamos entender esse processo de busca, pois este é um dos mecanismos que torna o HBase muito popular.

Arquitetura HBase: Como a pesquisa é inicializada no HBase?

Como você sabe, o Zookeeper armazena a localização da tabela META. Sempre que um cliente se aproxima com solicitações de leitura ou gravação para o HBase, ocorre a seguinte operação:

  1. O cliente recupera a localização da tabela META do ZooKeeper.
  2. O cliente então solicita a localização do Region Server da chave de linha correspondente da tabela META para acessá-lo. O cliente armazena em cache essas informações com a localização da Tabela META.
  3. Em seguida, obterá a localização da linha solicitando ao servidor de região correspondente.

Para referências futuras, o cliente usa seu cache para recuperar a localização da tabela META e ler anteriormente o servidor de região da chave de linha. Então o cliente não se referirá à tabela META, até e a menos que haja uma falha porque a região foi deslocada ou movida. Em seguida, ele solicitará novamente ao servidor META e atualizará o cache.

Como sempre, o cliente não perde tempo em recuperar a localização do Region Server do META Server, assim, economiza tempo e torna o processo de busca mais rápido. Agora, deixe-me contar como a escrita ocorre no HBase. Quais são os componentes envolvidos e como eles estão envolvidos?

Arquitetura HBase: HBase Write Mecanismo

A imagem abaixo explica o mecanismo de gravação no HBase.

c c # c ++

O mecanismo de gravação passa pelo seguinte processo sequencialmente (consulte a imagem acima):

Passo 1: Sempre que o cliente tem uma solicitação de gravação, o cliente grava os dados no WAL (registro de gravação antecipada).

  • As edições são então anexadas ao final do arquivo WAL.
  • Este arquivo WAL é mantido em cada servidor de região e o servidor de região o usa para recuperar dados que não foram confirmados no disco.

Passo 2: Depois que os dados são gravados no WAL, eles são copiados para o MemStore.

Etapa 3: Depois que os dados são colocados no MemStore, o cliente recebe a confirmação.

Passo 4: Quando o MemStore atinge o limite, ele despeja ou confirma os dados em um HFile.

Agora vamos dar um mergulho profundo e entender como o MemStore contribui no processo de escrita e quais são suas funções?

HBase Write Mecanismo- MemStore

  • O MemStore sempre atualiza os dados armazenados nele, em uma ordem lexicográfica (sequencialmente na forma de um dicionário) como KeyValues ​​classificados. Há um MemStore para cada família de colunas e, portanto, as atualizações são armazenadas de maneira classificada para cada família de colunas.
  • Quando o MemStore atinge o limite, ele despeja todos os dados em um novo HFile de maneira classificada. Este HFile é armazenado em HDFS. HBase contém vários HFiles para cada família de coluna.
  • Com o tempo, o número de HFile aumenta à medida que o MemStore despeja os dados.
  • O MemStore também salva o último número de sequência escrito, para que o Master Server e o MemStore saibam o que foi confirmado até o momento e por onde começar. Quando a região é iniciada, o último número de sequência é lido e, a partir desse número, novas edições começam.

Como já mencionei várias vezes, esse HFile é o principal armazenamento persistente em uma arquitetura HBase. Por fim, todos os dados são comprometidos com o HFile, que é o armazenamento permanente do HBase. Portanto, vejamos as propriedades de HFile, o que torna a pesquisa mais rápida durante a leitura e a gravação.

Arquitetura HBase: HBase Write Mecanismo- HFile

  • As gravações são colocadas sequencialmente no disco. Portanto, o movimento da cabeça de leitura e gravação do disco é muito menor. Isso torna o mecanismo de gravação e pesquisa muito rápido.
  • Os índices HFile são carregados na memória sempre que um HFile é aberto. Isso ajuda a encontrar um registro em uma única busca.
  • O trailer é um ponteiro que aponta para o meta-bloco do HFile. Ele é escrito no final do arquivo confirmado. Ele contém informações sobre timestamp e filtros bloom.
  • O filtro Bloom ajuda na busca de pares de valores-chave, ele pula o arquivo que não contém a chave de linha necessária. Timestamp também ajuda na busca de uma versão do arquivo, ajuda a pular os dados.

Depois de conhecer o mecanismo de gravação e o papel dos vários componentes para tornar a gravação e a pesquisa mais rápidas. Estarei explicando como funciona o mecanismo de leitura dentro de uma arquitetura HBase? Em seguida, passaremos para os mecanismos que aumentam o desempenho do HBase, como compactação, divisão de região e recuperação.

Arquitetura HBase: Leia o mecanismo

Conforme discutido em nosso mecanismo de pesquisa, primeiro o cliente recupera a localização do Region Server do .META Server se o cliente não o tiver em sua memória cache. Em seguida, ele segue as etapas sequenciais da seguinte forma:

  • Para ler os dados, o scanner primeiro procura a célula de linha no cache de bloco. Aqui, todos os pares de valores-chave lidos recentemente são armazenados.
  • Se o Scanner não conseguir encontrar o resultado necessário, ele vai para o MemStore, pois sabemos que esta é a memória cache de gravação. Lá, ele procura os arquivos gravados mais recentemente, que ainda não foram despejados no HFile.
  • Por fim, ele usará filtros bloom e cache de bloco para carregar os dados do HFile.

Até agora, discuti o mecanismo de pesquisa, leitura e gravação do HBase. Agora veremos o mecanismo HBase que torna a pesquisa, leitura e escrita rápida no HBase. Primeiro, vamos entender Compactação , que é um desses mecanismos.

Arquitetura HBase: Compactação

HBase combina HFiles para reduzir o armazenamento e reduzir o número de buscas de disco necessárias para uma leitura. Este processo é chamado compactação . A compactação escolhe alguns HFiles de uma região e os combina. Existem dois tipos de compactação, como você pode ver na imagem acima.

  1. Compactação Menor : O HBase escolhe automaticamente HFiles menores e os compromete novamente em HFiles maiores, conforme mostrado na imagem acima. Isso é chamado de compactação menor. Ele executa a classificação de mesclagem para comprometer HFiles menores em HFiles maiores. Isso ajuda na otimização do espaço de armazenamento.
  2. Compactação Principal: Conforme ilustrado na imagem acima, na compactação principal, o HBase mescla e compromete os HFiles menores de uma região em um novo HFile. Nesse processo, as mesmas famílias de colunas são colocadas juntas no novo HFile. Ele descarta a célula excluída e expirada neste processo. Aumenta o desempenho de leitura.

Mas durante esse processo, os discos de entrada e saída e o tráfego de rede podem ficar congestionados. Isso é conhecido como amplificação de escrita . Portanto, geralmente é programado durante horários de pico de baixa carga.

Agora, outro processo de otimização de desempenho que discutirei é Divisão de Região . Isso é muito importante para o balanceamento de carga.

matriz de objetos em java

Arquitetura HBase: Divisão de Região

A figura abaixo ilustra o mecanismo de divisão de região.

Sempre que uma região se torna grande, ela é dividida em duas regiões filhas, conforme mostrado na figura acima. Cada região representa exatamente a metade da região pai. Em seguida, essa divisão é relatada ao HMaster. Isso é tratado pelo mesmo Region Server até que o HMaster os aloque a um novo Region Server para balanceamento de carga.

Seguindo na linha, por último, mas não menos importante, explicarei como o HBase recupera dados após uma falha. Como sabemos isso Recuperação de Falhas é um recurso muito importante do HBase, portanto, deixe-nos saber como o HBase recupera os dados após uma falha.

Arquitetura HBase: HBase Crash e recuperação de dados

  • Sempre que um Region Server falha, o ZooKeeper notifica o HMaster sobre a falha.
  • Então o HMaster distribui e aloca as regiões do Region Server com falha para muitos Region Servers ativos. Para recuperar os dados do MemStore do servidor regional com falha, o HMaster distribui o WAL para todos os servidores regionais.
  • Cada servidor de região executa novamente o WAL para construir o MemStore para a família de colunas dessa região com falha.
  • Os dados são gravados em ordem cronológica (em uma ordem oportuna) no WAL. Portanto, reexecutar esse WAL significa fazer todas as alterações feitas e armazenadas no arquivo MemStore.
  • Assim, depois que todos os servidores de região executam o WAL, os dados do MemStore para toda a família de colunas são recuperados.

Espero que este blog tenha ajudado você a compreender o Modelo de Dados HBase e a Arquitetura HBase. Espero que você tenha aproveitado. Agora você pode se relacionar com os recursos do HBase (que expliquei em meu Tutorial HBase blog) com HBase Architecture e entender como funciona internamente. Agora que você conhece a parte teórica do HBase, passe para a parte prática. Tendo isso em mente, nosso próximo blog de estarei explicando uma amostra HBase POC .

Agora que você entendeu a arquitetura HBase, verifique o pela Edureka, uma empresa de aprendizagem online confiável com uma rede de mais de 250.000 alunos satisfeitos espalhados por todo o mundo. O curso Edureka Big Data Hadoop Certification Training ajuda os alunos a se tornarem especialistas em HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume e Sqoop usando casos de uso em tempo real no varejo, mídia social, aviação, turismo, domínio financeiro.

Tem alguma questão para nós? Mencione isso na seção de comentários e entraremos em contato com você.