sql >> Base de Datos >  >> NoSQL >> HBase

Conceptos de desarrollo de aplicaciones de Cloudera Operational Database

Cloudera Operational Database ahora está disponible en tres factores de forma diferentes en Cloudera Data Platform (CDP).

Si es nuevo en la base de datos operativa de Cloudera, consulte esta publicación de blog. Y echa un vistazo a la documentación aquí.

En esta publicación de blog, veremos los conceptos de Apache HBase y Apache Phoenix relevantes para el desarrollo de aplicaciones para Cloudera Operational Database.

Pero primero, estos son los diversos factores de forma en los que Cloudera Operational Database está disponible para los desarrolladores:

Nube pública:

  • Plantilla de base de datos operativa de CDP Data Hub 
  • Experiencia de Cloudera Operational Database (COD) que es una solución dbPaaS administrada

Local:

  • Base de nube privada de CDP

Los diferentes factores de forma le permiten desarrollar aplicaciones que pueden ejecutarse en las instalaciones, en la nube pública o en ambos.

Cloudera Operational Database funciona con Apache HBase y Apache Phoenix. En la base de datos operativa de Cloudera, utiliza Apache HBase como un almacén de datos con HDFS y/o S3 que proporcionan la infraestructura de almacenamiento. Tiene la opción de desarrollar aplicaciones usando una de las aplicaciones nativas de Apache HBase o puede usar Apache Phoenix para acceder a los datos. Apache Phoenix es una capa SQL que proporciona una interfaz programática ANSI SQL. Funciona sobre Apache HBase y hace posible el manejo de datos mediante consultas SQL estándar. (Las sentencias DML no son SQL estándar).

Muchos desarrolladores prefieren usar el lenguaje de consulta estructurado (SQL) para acceder a los datos almacenados en la base de datos y Apache Phoenix en Cloudera Operational Database lo ayuda a lograrlo. Si es administrador o desarrollador de una base de datos, puede comenzar a escribir consultas de inmediato utilizando Apache Phoenix sin tener que lidiar con el código Java.

Para almacenar y acceder a los datos en la base de datos operativa, puede realizar una de las siguientes acciones:

Utilice las API de cliente nativas de Apache HBase para interactuar con los datos en HBase:

  • Usar las API de HBase para Java
  • Usar el servidor HBase REST

También puede acceder a sus datos mediante la aplicación Hue HBase. Esta aplicación es una consola que puede usar para acceder a los datos almacenados en Apache HBase.

O utilice Apache Phoenix con uno de los controladores de Apache Phoenix para interactuar con los datos almacenados en Apache HBase:

  • Usar el controlador JDBC para Apache Phoenix
  • Usar el controlador ODBC para Apache Phoenix
  • Usar el controlador de Python para Apache Phoenix

Veamos los conceptos de Apache HBase y Apache Phoenix que necesita para el desarrollo de su aplicación.

Espacio de nombres

Un espacio de nombres es una agrupación lógica de tablas análoga a una base de datos en un sistema de base de datos relacional.

Tablas y filas

Uno o más calificadores de columna constituyen una fila; una o más filas constituyen una tabla. Cada fila se puede identificar mediante una clave de fila. Al escribir aplicaciones, puede acceder a una fila o una secuencia de filas utilizando la clave de fila única.

Familias de columnas

Familias de columnas definidas en el momento de la creación de la tabla en función de cómo se relacionan entre sí. Las familias de columnas pueden tener calificadores de columna donde se pueden almacenar los valores. Los calificadores de columna a veces también se denominan simplemente columnas y se organizan en familias de columnas. Las familias de columnas se ubican juntas en el almacenamiento.

Las familias de columnas dividen los datos verticalmente. Si tiene un caso de uso en el que desea acceder a un conjunto de calificadores de columna, la partición de familias de columnas reducirá la cantidad de archivos almacenados para leer y mejorará el rendimiento de lectura. Debe evitar la partición si desea acceder a dos o más familias de columnas al mismo tiempo.

La compresión y la codificación se aplican en el nivel de familia de columnas. No tiene que declarar tipos de datos para cada familia de columnas y una familia de columnas puede contener datos de varios tipos de datos.

Composición de las tablas Apache HBase

Las tablas de Apache HBase constan de una o más familias de columnas y pueden dividirse en varias regiones. Los datos de cada familia de columnas en cada región se guardan en varios HFiles, que están en HDFS o en almacenamiento de objetos como S3 y ADLS.

Cada región almacena las filas dentro de un rango de espacio de claves específico, es decir, entre una clave de fila inicial y una clave de fila final. Las claves de fila son exclusivas de una región y no hay dos regiones que se superpongan. Una región es atendida por un RegionServer a la vez, lo que garantiza la coherencia dentro de una fila.

Para obtener más información sobre la división y fusión de regiones Apache HBase, consulte la publicación de blog aquí:https://blog.cloudera.com/apache-hbase-region-splitting-and-merging/

Diseño de datos de Apache HBase

Apache HBase sobresale en casos de uso de procesamiento de transacciones en línea (OLTP) porque puede haber más de una versión de su unidad de almacenamiento básica que se denomina calificador de columna (CQ) basado en una marca de tiempo. El valor único de cada versión del calificador de columna se almacena por separado. Una familia de columnas puede tener cualquier cantidad de celdas y pueden ser completamente aleatorias y tener diferentes tipos de datos, números y nombres en cada fila. Puede almacenar cualquier cantidad de celdas en una familia de columnas, pero tenga en cuenta que los calificadores de columna en una familia de columnas se almacenan por separado de los calificadores de columna en otras familias de columnas.

Si está interesado en cómo Apache HBase realiza el control de concurrencia multiversión (MVCC), puede leer esta publicación de blog:https://blogs.apache.org/hbase/entry/apache_hbase_internals_locking_and.

Mesas Apache Phoenix

Las tablas de Apache Phoenix tienen una relación 1:1 con una tabla de Apache HBase. Puede optar por crear una nueva tabla mediante una instrucción DDL de Apache Phoenix como CREATE TABLE, o crear una vista en una tabla Apache HBase existente mediante la instrucción VIEW.

Cree, elimine o modifique el contenido de una tabla de Apache HBase mediante instrucciones DDL de Apache Phoenix. En muchos casos, es posible que pueda modificar una tabla de Apache Phoenix directamente mediante las API nativas de Apache HBase. Esto no es compatible con Cloudera Operational Database y generará errores, índices incoherentes, resultados de consulta incorrectos y, en ocasiones, datos corruptos.

Ingesta de datos

Puede utilizar sentencias SQL de Apache Phoenix para ingerir datos en Cloudera Operational Database (COD). COD también está estrechamente integrado con otros servicios de Cloudera Data Platform. Puede ver cómo usar algunas de las capacidades de ingesta de datos en los siguientes enlaces.

  • Use Spark o Hive junto con Apache HBase para ingerir datos. Puede utilizar el conector HBase-Spark. Además, vea una lista de formas en las que puede importar datos a HBase Importación de datos a HBase.
  • Use Spark o Hive junto con Apache Phoenix para ingerir datos. Puede utilizar los conectores Phoenix-Spark y Phoenix-Hive. Consulte Comprensión del conector Apache Phoenix-Spark y Comprensión del conector Apache Phoenix-Hive.
  • Use Cloudera DataFlow (Apache NiFi) para ingerir datos. Consulte Ingesta de datos en Apache HBase en CDP Public Cloud.
  • Utilice Cloudera Data Engineering (Spark) para ingerir datos. Consulte Base de datos operativa de Cloudera:ingeniería de datos de Cloudera con Phoenix.

Comandos DML de Apache Phoenix

Puede utilizar los comandos DML de Apache Phoenix, como UPSERT o DELETE. Asegúrese de que los comandos DML que desea utilizar sean compatibles con Apache Phoenix. Para obtener más información, consulte la referencia de gramática de Apache Phoenix.

Interfaz de usuario de Hue para acceder a los datos

Hue es un editor de SQL interactivo basado en la web que le permite interactuar con los datos almacenados en la base de datos operativa de Cloudera. Para obtener más información sobre el uso de Hue con el servicio Cloudera Operational Database, consulte Acceso a Cloudera Operational Database Hue.

Ejecución de aplicaciones en Data Hub y COD

Cloudera Operational Database admite aplicaciones escritas en estos lenguajes admitidos mediante Apache Phoenix. También puede desarrollar aplicaciones Apache HBase utilizando las API nativas de HBase para Java. Cubriremos más sobre el desarrollo de aplicaciones y algunas aplicaciones de muestra que puede usar en las próximas publicaciones del blog.

La experiencia de Cloudera Operational Database (COD) proporciona un fácil acceso a la información de conectividad del cliente desde la interfaz de usuario. Para obtener más información, consulte Información de conectividad del cliente para compilar su aplicación contra su COD. Para obtener más información, consulte Uso de Apache Phoenix para almacenar y acceder a datos.

En CDP Private Cloud Base, puede encontrar esta información desde la interfaz de usuario de Apache Knox si desea conectarse a Phoenix Query Server (PQS) a través de Apache Knox, o usar controladores JDBC y JAR de cliente de Phoenix presentes en la siguiente ubicación en un clúster nodo con función de puerta de enlace de phoenix /opt/cloudera/parcels/CDH/lib/phoenix.

Conclusión

En las próximas publicaciones, veremos las consideraciones de desarrollo y la creación de aplicaciones, incluidas las aplicaciones de muestra.

Puede ver algunas aplicaciones de muestra existentes y documentación para Cloudera Operational Database en Data Hub y Cloudera Operational Database experimente la solución dbPaaS en los siguientes enlaces:

  • Resumen de la experiencia de Cloudera Operational Database
  • Inicio rápido de la base de datos operativa de Cloudera
  • Introducción a la plantilla del centro de datos de la base de datos operativa
  • Creación de una aplicación de aprendizaje automático con Cloudera Data Science Workbench y Operational Database