Tutorial do HBase: Introdução ao HBase e estudo de caso do Facebook



Este blog de tutorial do HBase apresenta o que é o HBase e seus recursos. Também cobre o estudo de caso do Facebook Messenger para entender os benefícios do HBase.

Como mencionamos em nosso blog, HBase é uma parte essencial de nosso ecossistema Hadoop. Agora, gostaria de levá-lo ao tutorial do HBase, onde apresentarei o Apache HBase e, em seguida, passaremos pelo estudo de caso do Facebook Messenger. Vamos cobrir os seguintes tópicos neste blog de tutorial do HBase:

Tutorial do Apache HBase: História

Vamos começar com a história do HBase e saber como o HBase evoluiu ao longo do tempo.





História do HBase - Tutorial do HBase - Edureka

  • O Apache HBase é modelado de acordo com o BigTable do Google, que é usado para coletar dados e atender solicitações para vários serviços do Google, como Maps, Finance, Earth etc.
  • O Apache HBase começou como um projeto da empresa Powerset for Natural Language Search, que lidava com conjuntos de dados enormes e esparsos.
  • O Apache HBase foi lançado pela primeira vez em fevereiro de 2007. Mais tarde, em janeiro de 2008, o HBase se tornou um subprojeto do Apache Hadoop.
  • Em 2010, o HBase se tornou o projeto de nível superior do Apache.

Tutorial HBase | Bancos de dados NoSQL | Edureka



como alertar em javascript

Depois de conhecer a história do Apache HBase, você ficaria curioso para saber o que é Apache HBase? Vamos prosseguir e dar uma olhada.

Tutorial do Apache HBase: Introdução ao HBase

HBase é um código aberto, multidimensional, distribuído, escalonável e um Banco de dados NoSQL escrito em Java. HBase roda em cima de HDFS (Hadoop Distributed File System) e fornece recursos semelhantes a BigTable para o Hadoop. Ele é projetado para fornecer uma maneira tolerante a falhas de armazenamento de grandes coleções de conjuntos de dados esparsos.

Desde então, o HBase alcança alto rendimento e baixa latência, fornecendo acesso de leitura / gravação mais rápido em grandes conjuntos de dados. Portanto, o HBase é a escolha para os aplicativos que requerem acesso rápido e aleatório a uma grande quantidade de dados.



Ele fornece compressão, operações na memória e filtros Bloom (estrutura de dados que informa se um valor está presente em um conjunto ou não) para atender ao requisito de leitura e gravação rápida e aleatória.

Vamos entender por meio de um exemplo: Um motor a jato gera vários tipos de dados a partir de diferentes sensores, como sensor de pressão, sensor de temperatura, sensor de velocidade, etc. que indicam a saúde do motor. Isso é muito útil para entender os problemas e o status do vôo. O Continuous Engine Operations gera 500 GB de dados por voo e cerca de 300 mil voos por dia. Portanto, o Engine Analytics aplicado a esses dados quase em tempo real pode ser usado para diagnosticar problemas de forma proativa e reduzir o tempo de inatividade não planejado. Isso requer um ambiente distribuído para armazenar grande quantidade de dados com leituras e gravações aleatórias rápidas para processamento em tempo real. Aqui, o HBase vem para o resgate. Falarei sobre HBase Read and Write em detalhes em meu próximo blog em Arquitetura HBase .

Como sabemos, o HBase é um banco de dados NoSQL. Portanto, antes de entender mais sobre o HBase, vamos primeiro discutir sobre os bancos de dados NoSQL e seus tipos.

Tutorial do Apache HBase: bancos de dados NoSQL

NoSQL significa Não só SQL . Os bancos de dados NoSQL são modelados de uma forma que podem representar dados diferentes de formatos tabulares, bancos de dados relacionais incomuns. Ele usa diferentes formatos para representar dados em bancos de dados e, portanto, existem diferentes tipos de bancos de dados NoSQL com base em seu formato de representação. A maioria dos bancos de dados NoSQL aproveita a disponibilidade e a velocidade em vez da consistência. Agora, vamos seguir em frente e entender sobre os diferentes tipos de bancos de dados NoSQL e seus formatos de representação.

Armazenamentos de valores-chave:

É um banco de dados sem esquema que contém chaves e valores. Cada chave aponta para um valor que é uma matriz de bytes, pode ser uma string, BLOB, XML, etc. Lamborghini é uma chave e pode apontar para um valor Gallardo, Aventador, Murciélago, Reventón, Diablo, Huracán, Veneno, Centenario etc.

Bancos de dados de armazenamento de valor-chave: Aerospike, Couchbase, Dynamo, FairCom c-treeACE, FoundationDB, HyperDex, MemcacheDB, MUMPS, Oracle NoSQL Database, OrientDB, Redis, Riak, Berkeley DB.

Caso de uso

Os armazenamentos de valores-chave controlam bem o tamanho e são bons no processamento de um fluxo constante de operações de leitura / gravação com baixa latência. Isso os torna perfeitos paraPreferências do usuário e lojas de perfis,Recomendações de produtos, itens mais recentes visualizados no site de um varejista para direcionar futuras recomendações de produtos para clientes,Os hábitos de compra do cliente de serviço de anúncio resultam em anúncios, cupons, etc. personalizados para cada cliente em tempo real.

Orientado a Documento :

Ele segue o mesmo par de valores-chave, mas é semiestruturado como XML, JSON, BSON. Essas estruturas são consideradas documentos.

Bancos de dados baseados em documentos: Apache CouchDB, Clusterpoint, Couchbase, DocumentDB, HyperDex, IBM Domino, MarkLogic, MongoDB, OrientDB, Qizx, RethinkDB.

Caso de Uso

Como o documento suporta esquema flexível, leitura rápida, gravação e particionamento o torna adequado para a criação de bancos de dados de usuário em vários serviços como Twitter, sites de comércio eletrônico, etc.

Orientado por coluna:

Neste banco de dados, os dados são armazenados em células agrupadas em colunas ao invés de linhas. As colunas são agrupadas logicamente em famílias de colunas que podem ser criadas durante a definição do esquema ou no tempo de execução.

Esses tipos de bancos de dados armazenam toda a célula correspondente a uma coluna como entrada contínua em disco, tornando assim o acesso e a pesquisa muito mais rápidos.

Bancos de dados baseados em colunas: HBase, Accumulo, Cassandra, Druid, Vertica.

Caso de Uso

Ele suporta o armazenamento enorme e permite acesso mais rápido de leitura e gravação sobre ele. Isso torna os bancos de dados orientados a colunas adequados para armazenar comportamentos de clientes em sites de comércio eletrônico, sistemas financeiros como o Google Finance e dados do mercado de ações, mapas do Google etc.

Orientado para gráficos:

É uma representação gráfica flexível perfeita, usada ao contrário do SQL. Esses tipos de bancos de dados resolvem facilmente problemas de escalabilidade de endereço, pois contém arestas e nós que podem ser estendidos de acordo com os requisitos.

Bancos de dados baseados em gráficos: AllegroGraph, ArangoDB, InfiniteGraph, Apache Giraph, MarkLogic, Neo4J, OrientDB, Virtuoso, Stardog.

Caso de uso

Isso é usado basicamente na detecção de fraude, mecanismos de recomendação em tempo real (na maioria dos casos e-commerce), gerenciamento de dados mestre (MDM), operações de rede e TI, gerenciamento de identidade e acesso (IAM), etc.

HBase e Cassandra são os dois famosos bancos de dados orientados a colunas. Portanto, agora falando sobre isso em um nível superior, vamos comparar e entender as diferenças arquitetônicas e de trabalho entre o HBase e o Cassandra.

Tutorial do HBase: HBase VS Cassandra

  • HBase é modelado em BigTable (Google) enquanto Cassandra é baseado em DynamoDB (Amazon) inicialmente desenvolvido pelo Facebook.
  • O HBase aproveita a infraestrutura do Hadoop (HDFS, ZooKeeper), enquanto o Cassandra evoluiu separadamente, mas você pode combinar o Hadoop e o Cassandra de acordo com suas necessidades.
  • O HBase possui vários componentes que se comunicam entre si, como HBase HMaster, ZooKeeper, NameNode, Region Severs. Já o Cassandra é um tipo de nó único, em que todos os nós são iguais e realizam todas as funções. Qualquer nó pode ser o coordenador, o que remove o Ponto Único de falha.
  • O HBase é otimizado para leitura e oferece suporte a gravações únicas, o que leva à consistência estrita. HBase oferece suporte a varreduras baseadas em intervalo, o que torna o processo de varredura mais rápido. Enquanto o Cassandra suporta leituras de uma única linha, o que mantém a consistência eventual.
  • O Cassandra não oferece suporte para varreduras de linha baseadas em intervalo, o que retarda o processo de varredura em comparação com o HBase.
  • O HBase oferece suporte ao particionamento ordenado, no qual as linhas de uma família de colunas são armazenadas na ordem RowKey, enquanto no Casandra o particionamento ordenado é um desafio. Devido ao particionamento RowKey, o processo de varredura é mais rápido no HBase em comparação com o Cassandra.
  • O HBase não oferece suporte ao balanceamento de carga de leitura, um servidor de região atende à solicitação de leitura e as réplicas são usadas apenas em caso de falha. Enquanto o Cassandra suporta balanceamento de carga de leitura e pode ler os mesmos dados de vários nós. Isso pode comprometer a consistência.
  • No teorema CAP (Consistency, Availability & Partition -Tolerance), o HBase mantém a consistência e a disponibilidade, enquanto o Cassandra se concentra na disponibilidade e partição -tolerância.


Agora vamos dar um mergulho profundo e entender os recursos do Apache HBase que o tornam tão popular.

Tutorial do Apache HBase: Recursos do HBase

  • Leitura e gravação atômica: Em um nível de linha, o HBase fornece leitura e gravação atômica. Isso pode ser explicado como, durante um processo de leitura ou gravação, todos os outros processos são impedidos de realizar qualquer operação de leitura ou gravação.
  • Leituras e gravações consistentes: O HBase fornece leituras e gravações consistentes devido ao recurso acima.
  • Escalabilidade linear e modular: Como os conjuntos de dados são distribuídos no HDFS, eles são linearmente escalonáveis ​​em vários nós, bem como modularmente escaláveis, já que são divididos em vários nós.
  • Fragmentação automática e configurável de tabelas: As tabelas HBase são distribuídas entre clusters e esses clusters são distribuídos entre regiões. Essas regiões e clusters se dividem e são redistribuídos conforme os dados aumentam.
  • API Java fácil de usar para acesso do cliente: Ele fornece uma API Java fácil de usar para acesso programático.
  • Gateway Thrift e serviços da Web completos REST: Ele também suporta Thrift e REST API para front-ends não Java.
  • Bloquear Cache e Filtros Bloom: HBase oferece suporte a Block Cache e Bloom Filters para otimização de consulta de alto volume.
  • Suporte de falha automática: O HBase com HDFS fornece WAL (Write Ahead Log) em clusters que fornecem suporte a falhas automáticas.
  • Chaves de linha classificadas: Como a pesquisa é feita em um intervalo de linhas, o HBase armazena as chaves de linha em uma ordem lexicográfica. Usando esses rowkeys e timestamp classificados, podemos construir uma solicitação otimizada.

Agora avançando neste tutorial do HBase, deixe-me dizer quais são os casos de uso e cenários em que o HBase pode ser usado e, em seguida, compararei o HDFS e o HBase.

Gostaria de chamar sua atenção para os cenários em que o HBase é o mais adequado.

Tutorial do HBase: Onde podemos usar o HBase?

  • Devemos usar o HBase onde temos grandes conjuntos de dados (milhões ou bilhões ou linhas e colunas) e precisamos de acesso rápido, aleatório e em tempo real para leitura e gravação dos dados.
  • Os conjuntos de dados são distribuídos em vários clusters e precisamos de alta escalabilidade para lidar com os dados.
  • Os dados são coletados de várias fontes de dados e são dados semiestruturados ou não estruturados ou uma combinação de todos. Isso poderia ser tratado facilmente com o HBase.
  • Você deseja armazenar dados orientados a coluna.
  • Você tem muitas versões dos conjuntos de dados e precisa armazenar todos eles.

Antes de pular para o estudo de caso do Facebook Messenger,deixe-me dizer quais são as diferenças entre HBase e HDFS.

Tutorial do HBase: HBase VS HDFS

HDFS é um sistema de arquivos distribuído baseado em Java que permite armazenar grandes dados em vários nós em um cluster Hadoop. Portanto, o HDFS é um sistema de armazenamento subjacente para armazenar os dados no ambiente distribuído. HDFS é um sistema de arquivos, enquanto HBase é um banco de dados (semelhante a NTFS e MySQL).

Como o HDFS e o HBase armazenam qualquer tipo de dados (ou seja, estruturados, semiestruturados e não estruturados) em um ambiente distribuído, vamos examinar as diferenças entre o sistema de arquivos HDFS e o HBase, um banco de dados NoSQL.

  • O HBase fornece acesso de baixa latência a pequenas quantidades de dados em grandes conjuntos de dados, enquanto o HDFS fornece operações de alta latência.
  • O HBase oferece suporte para leitura e gravação aleatórias, enquanto o HDFS oferece suporte para WORM (Gravar uma vez, Ler muitas ou várias vezes).
  • O HDFS é basicamente ou principalmente acessado por meio de jobs MapReduce, enquanto o HBase é acessado por meio de comandos shell, API Java, REST, Avro ou API Thrift.

O HDFS armazena grandes conjuntos de dados em um ambiente distribuído e aproveita o processamento em lote desses dados. Por exemplo. ajudaria um site de comércio eletrônico a armazenar milhões de dados de clientes em um ambiente distribuído que cresceu durante um longo período de tempo (pode ser de 4 a 5 anos ou mais). Em seguida, ele aproveita o processamento em lote sobre esses dados e analisa os comportamentos, padrões e requisitos do cliente. Então a empresa poderia descobrir que tipo de produto, o cliente compra em quais meses. Ajuda a armazenar dados arquivados e executar processamento em lote sobre eles.

Enquanto o HBase armazena dados de uma maneira orientada a coluna, onde cada coluna é armazenada em conjunto para que a leitura se torne mais rápida, aproveitando o processamento em tempo real. Por exemplo. em um ambiente de e-commerce semelhante, ele armazena milhões de dados de produtos. Então, se você busca um produto entre milhões de produtos, otimiza o processo de solicitação e busca, produzindo o resultado imediatamente (ou pode-se dizer em tempo real). O detalhado Explicação arquitetônica HBase , Estarei cobrindo no meu próximo blog.

Como sabemos, o HBase é distribuído no HDFS, portanto, uma combinação de ambos nos dá uma grande oportunidade de usar os benefícios de ambos, em uma solução personalizada, como veremos no estudo de caso do Facebook messenger abaixo.

Tutorial do HBase: estudo de caso do Facebook Messenger

Plataforma de mensagens do Facebook mudou do Apache Cassandra para o HBase em novembro de 2010.

O Facebook Messenger combina mensagens, e-mail, bate-papo e SMS em uma conversa em tempo real. O Facebook estava tentando construir uma infraestrutura escalonável e robusta para lidar com um conjunto desses serviços.

Naquela época, a infraestrutura de mensagens lidava com mais de 350 milhões de usuários, enviando mais de 15 bilhões de mensagens pessoa a pessoa por mês. O serviço de chat suporta mais de 300 milhões de usuários que enviam mais de 120 bilhões de mensagens por mês.

Ao monitorar o uso, eles descobriram que surgiram dois padrões gerais de dados:

o que é pojo na primavera
  • Um pequeno conjunto de dados temporais que tende a ser volátil
  • Um conjunto crescente de dados que raramente é acessado

O Facebook queria encontrar uma solução de armazenamento para esses dois padrões de uso e começou a investigar para encontrar um substituto para a infraestrutura de mensagens existente.

No início de 2008, eles usaram banco de dados de código aberto, ou seja, Cassandra, que é um armazenamento de valor-chave de consistência eventual que já estava em produção servindo tráfego para Pesquisa na caixa de entrada. Suas equipes tinham um grande conhecimento no uso e gerenciamento de banco de dados MySQL, portanto, a troca de qualquer uma das tecnologias era uma grande preocupação para eles.

Eles passaram algumas semanas testando diferentes frameworks, para avaliar os clusters do MySQL, Apache Cassandra, Apache HBase e outros sistemas. Por fim, eles selecionaram o HBase.

Como o MySQL falhou em lidar com grandes conjuntos de dados com eficiência, conforme os índices e conjuntos de dados aumentaram, o desempenho foi prejudicado. Eles descobriram que Cassandra era incapaz de lidar com padrões difíceis para reconciliar sua nova infraestrutura de Mensagens.

Os principais problemas foram:

  • Armazenamento de grandes conjuntos de dados em crescimento contínuo de vários serviços do Facebook.
  • Requer banco de dados que pode alavancar alto processamento nele.
  • Alto desempenho necessário para atender milhões de solicitações.
  • Manter a consistência no armazenamento e desempenho.

Figura: Desafios enfrentados pelo Facebook Messenger

Para todos esses problemas, o Facebook surgiu com uma solução, ou seja, o HBase. O Facebook adotou o HBase para servir o Facebook messenger, chat, e-mail, etc. devido aos seus vários recursos.

O HBase vem com escalabilidade e desempenho muito bons para esta carga de trabalho com um modelo de consistência mais simples do que o Cassandra. Embora eles tenham considerado o HBase o mais adequado em termos de seus requisitos, como balanceamento de carga automático e failover, suporte à compressão, vários fragmentos por servidor, etc.

O HDFS, que é o sistema de arquivos subjacente usado pelo HBase, também forneceu vários recursos necessários, como somas de verificação de ponta a ponta, replicação e reequilíbrio automático de carga.

Figura: HBase como solução para o Facebook Messenger

À medida que adotaram o HBase, eles também se concentraram em comprometer os resultados de volta ao próprio HBase e começaram a trabalhar em estreita colaboração com a comunidade Apache.

Como as mensagens aceitam dados de diferentes fontes, como SMS, bate-papos e e-mails, eles escreveram um servidor de aplicativos para lidar com todas as tomadas de decisão para a mensagem de um usuário. Ele faz interface com um grande número de outros serviços. Os anexos são armazenados em um Palheiro (que funciona no HBase). Eles também escreveram um serviço de descoberta de usuários no Apache ZooKeeper, que conversam com outros serviços de infraestrutura para relacionamentos com amigos, verificação de contas de e-mail, decisões de entrega e de privacidade.

A equipe do Facebook passou muito tempo confirmando que cada um desses serviços é robusto, confiável e oferece bom desempenho para lidar com um sistema de mensagens em tempo real.

Espero que este blog de tutorial do HBase seja informativo e você tenha gostado. Neste blog, você conheceu os fundamentos do HBase e suas funcionalidades.No meu próximo blog de , Estarei explicando o arquitetura do HBase e trabalhar com HBase, o que o torna popular para leitura / gravação rápida e aleatória.

Agora que você entendeu os fundamentos do HBase, confira 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ê.