HBase
 sql >> Base de Dados >  >> NoSQL >> HBase

Conceitos de desenvolvimento de aplicativos do Cloudera Operational Database


O Cloudera Operational Database agora está disponível em três formatos diferentes na Cloudera Data Platform (CDP).

Se você é novo no Banco de Dados Operacional Cloudera, consulte esta postagem no blog. E, confira a documentação aqui.

Nesta postagem do blog, veremos os conceitos do Apache HBase e do Apache Phoenix relevantes para o desenvolvimento de aplicativos para o Cloudera Operational Database.

Mas primeiro, estes são os vários fatores de forma em que o Cloudera Operational Database está disponível para os desenvolvedores:

Nuvem pública:
  • Modelo de banco de dados operacional do CDP Data Hub 
  • Experiência Cloudera Operational Database (COD) que é uma solução dbPaaS gerenciada

No local:
  • Base de nuvem privada CDP

Os diferentes fatores de forma permitem que você desenvolva aplicativos que podem ser executados no local, na nuvem pública ou em ambos.

O Banco de Dados Operacional Cloudera é desenvolvido com Apache HBase e Apache Phoenix. No Cloudera Operational Database, você usa o Apache HBase como um datastore com HDFS e/ou S3 fornecendo a infraestrutura de armazenamento. Você tem a opção de desenvolver aplicativos usando um dos aplicativos nativos do Apache HBase ou pode usar o Apache Phoenix para acesso a dados. Apache Phoenix é uma camada SQL que fornece uma interface SQL ANSI programática. Ele funciona em cima do Apache HBase e torna possível manipular dados usando consultas SQL padrão. (As instruções DML não são SQL padrão).

Muitos desenvolvedores preferem usar o Structured Query Language (SQL) para acessar os dados armazenados no banco de dados e o Apache Phoenix no Cloudera Operational Database ajuda você a conseguir isso. Se você é um administrador ou desenvolvedor de banco de dados, pode começar a escrever consultas imediatamente usando o Apache Phoenix sem ter que lidar com o código Java.

Para armazenar e acessar dados no banco de dados operacional, você pode fazer o seguinte:

Use APIs de cliente Apache HBase nativas para interagir com dados no HBase:
  • Use as APIs do HBase para Java
  • Usar o servidor HBase REST

Você também pode acessar seus dados usando o aplicativo Hue HBase. Este aplicativo é um console que você pode usar para acessar dados armazenados no Apache HBase.

Ou use o Apache Phoenix com um dos drivers do Apache Phoenix para interagir com os dados armazenados no Apache HBase:
  • Use o driver JDBC para Apache Phoenix
  • Use o driver ODBC para Apache Phoenix
  • Use o driver Python para Apache Phoenix

Vejamos os conceitos no Apache HBase e Apache Phoenix que você precisa para o desenvolvimento de seu aplicativo.

Espaço de nomes


Um namespace é um agrupamento lógico de tabelas análogo a um banco de dados em um sistema de banco de dados relacional.

Tabelas e linhas


Um ou mais qualificadores de coluna constituem uma linha; uma ou mais linhas constituem uma tabela. Cada linha pode ser identificada por uma chave de linha. Ao escrever aplicativos, você pode acessar uma linha ou uma sequência de linhas usando a chave de linha exclusiva.

Famílias de colunas


Famílias de colunas definidas no momento da criação da tabela com base em como elas estão relacionadas entre si. As famílias de colunas podem ter qualificadores de coluna onde os valores podem ser armazenados. Os qualificadores de coluna às vezes também são chamados de colunas e são organizados em famílias de colunas. As famílias de colunas estão localizadas juntas no armazenamento.

As famílias de colunas particionam os dados verticalmente. Se você tiver um caso de uso em que deseja acessar um conjunto de qualificadores de coluna, o particionamento de famílias de colunas reduzirá o número de arquivos de armazenamento a serem lidos e melhorará o desempenho de leitura. Você deve evitar o particionamento se quiser acessar duas ou mais famílias de colunas ao mesmo tempo.

A compactação e a codificação são aplicadas no nível da família de colunas. Você não precisa declarar tipos de dados para cada família de colunas e uma família de colunas pode conter dados de vários tipos de dados.


Composição de tabelas do Apache HBase


As tabelas do Apache HBase consistem em uma ou mais famílias de colunas e podem ser divididas em várias regiões. Os dados de cada família de colunas em cada região são salvos em vários HFiles, que estão em HDFS ou armazenamento de objetos, como S3 e ADLS.

Cada região armazena as linhas dentro de um intervalo de keyspace específico, ou seja, entre uma chave de linha inicial e uma chave de linha final. As chaves de linha são exclusivas de uma região e não há sobreposição de duas regiões. Uma região é atendida por um RegionServer por vez, garantindo consistência em uma linha.

Para saber mais sobre a divisão e mesclagem de regiões do Apache HBase, consulte a postagem do blog aqui:https://blog.cloudera.com/apache-hbase-region-splitting-and-merging/

Layout de dados Apache HBase


O Apache HBase se destaca em casos de uso de Processamento de Transação Online (OLTP) porque pode haver mais de uma versão de sua unidade de armazenamento básica que é chamada de qualificador de coluna (CQ) com base em um carimbo de data/hora. O valor exclusivo de cada versão do qualificador de coluna é armazenado separadamente. Uma família de colunas pode ter qualquer número de células e pode ser completamente aleatória e ter diferentes tipos de dados, números e nomes em cada linha. Você pode armazenar qualquer número de células em uma família de colunas, mas observe que os qualificadores de coluna em uma família de colunas são armazenados separadamente dos qualificadores de coluna em outras famílias de colunas.

Se você estiver interessado em como o Apache HBase faz o Multiversion Concurrency Control (MVCC), você pode ler esta postagem no blog:https://blogs.apache.org/hbase/entry/apache_hbase_internals_locking_and.




Tabelas do Apache Phoenix


As tabelas do Apache Phoenix têm um relacionamento 1:1 com uma tabela do Apache HBase. Você pode optar por criar uma nova tabela usando uma instrução DDL do Apache Phoenix, como CREATE TABLE, ou criar uma exibição em uma tabela Apache HBase existente usando a instrução VIEW.

Crie, elimine ou modifique o conteúdo de uma tabela Apache HBase usando instruções Apache Phoenix DDL. Em muitos casos, você pode alterar uma tabela do Apache Phoenix diretamente usando APIs nativas do Apache HBase. Isso não é compatível com o Cloudera Operational Database e resultará em erros, índices inconsistentes, resultados de consulta incorretos e, às vezes, dados corrompidos.

Ingestão de dados


Você pode usar instruções SQL do Apache Phoenix para ingerir dados no Cloudera Operational Database (COD). O COD também está intimamente integrado a outros serviços da Cloudera Data Platform. Você pode ver como usar alguns dos recursos de ingestão de dados nos links a seguir.


  • Use Spark ou Hive junto com o Apache HBase para ingerir dados. Você pode usar o conector HBase-Spark. Além disso, veja uma lista de maneiras pelas quais você pode importar dados para o HBase Importando dados para o HBase.
  • Use Spark ou Hive junto com Apache Phoenix para ingerir dados. Você pode usar os conectores Phoenix-Spark e Phoenix-Hive. Consulte Noções básicas sobre o conector Apache Phoenix-Spark e Noções básicas sobre o conector Apache Phoenix-Hive.
  • Use Cloudera DataFlow (Apache NiFi) para ingerir dados. Consulte Ingestão de dados no Apache HBase no CDP Public Cloud.
  • Use Cloudera Data Engineering (Spark) para ingerir dados. Consulte Cloudera Operational Database – Cloudera Data Engineering usando Phoenix.

Comandos DML do Apache Phoenix


Você pode usar comandos DML do Apache Phoenix, como UPSERT ou DELETE. Certifique-se de que os comandos DML que você deseja usar sejam suportados pelo Apache Phoenix. Para obter mais informações, consulte a referência de gramática do Apache Phoenix.

Hue interface do usuário para acessar dados


Hue é um editor SQL interativo baseado na web que permite interagir com dados armazenados no Cloudera Operational Database. Para obter mais informações sobre como usar o Hue com o serviço Cloudera Operational Database, consulte Acesso ao Cloudera Operational Database Hue.

Executando aplicativos no Data Hub e COD


O Banco de Dados Operacional Cloudera oferece suporte a aplicativos escritos nessas linguagens suportadas usando o Apache Phoenix. Você também pode desenvolver aplicativos Apache HBase usando as APIs nativas do HBase para Java. Abordaremos mais sobre o desenvolvimento de aplicativos e alguns aplicativos de amostra que você pode usar nas próximas postagens do blog.

A experiência do Cloudera Operational Database (COD) fornece acesso fácil às informações de conectividade do cliente a partir da interface do usuário. Para obter mais informações, consulte Informações de conectividade do cliente para compilar seu aplicativo em relação ao seu COD. Para obter mais informações, consulte Usando o Apache Phoenix para armazenar e acessar dados.

No CDP Private Cloud Base, você pode encontrar essas informações na interface do usuário do Apache Knox se desejar se conectar ao Phoenix Query Server (PQS) por meio do Apache Knox ou usar drivers JDBC e JARs do cliente Phoenix presentes no local a seguir em um cluster nó com uma função phoenix-gateway /opt/cloudera/parcels/CDH/lib/phoenix.

Conclusão


Nas próximas postagens, veremos as considerações de desenvolvimento e a criação de aplicativos, incluindo aplicativos de amostra.

Você pode ver alguns aplicativos de amostra e documentação existentes para o Cloudera Operational Database no Data Hub e a solução dbPaaS da experiência do Cloudera Operational Database nos links a seguir:
  • Visão geral da experiência do Cloudera Operational Database
  • Início rápido do Cloudera Operational Database
  • Introdução ao modelo Operational Database Data Hub
  • Criando um aplicativo de aprendizado de máquina com o Cloudera Data Science Workbench e o banco de dados operacional