Cloudera Operational Database est désormais disponible dans trois formats différents dans Cloudera Data Platform (CDP).
Si vous débutez avec Cloudera Operational Database, consultez cet article de blog. Et consultez la documentation ici.
Dans cet article de blog, nous examinerons les concepts Apache HBase et Apache Phoenix pertinents pour le développement d'applications pour Cloudera Operational Database.
Mais d'abord, voici les différents facteurs de forme dans lesquels Cloudera Operational Database est disponible pour les développeurs :
Cloud public :
- Modèle de base de données opérationnelle du hub de données CDP
- Expérience Cloudera Operational Database (COD) qui est une solution dbPaaS gérée
Sur site :
- Base de cloud privé CDP
Les différents facteurs de forme vous permettent de développer des applications qui peuvent s'exécuter sur site, sur le cloud public ou les deux.
La base de données opérationnelle Cloudera est optimisée par Apache HBase et Apache Phoenix. Dans Cloudera Operational Database, vous utilisez Apache HBase comme magasin de données avec HDFS et/ou S3 fournissant l'infrastructure de stockage. Vous avez le choix de développer des applications à l'aide de l'une des applications natives Apache HBase ou d'utiliser Apache Phoenix pour l'accès aux données. Apache Phoenix est une couche SQL qui fournit une interface SQL ANSI programmatique. Il fonctionne au-dessus d'Apache HBase et permet de gérer les données à l'aide de requêtes SQL standard. (Les instructions DML ne sont pas du SQL standard).
De nombreux développeurs préfèrent utiliser le langage de requête structuré (SQL) pour accéder aux données stockées dans la base de données et Apache Phoenix dans Cloudera Operational Database vous aide à y parvenir. Si vous êtes un administrateur ou un développeur de base de données, vous pouvez commencer à écrire des requêtes immédiatement à l'aide d'Apache Phoenix sans avoir à démêler le code Java.
Pour stocker et accéder aux données dans la base de données opérationnelle, vous pouvez effectuer l'une des opérations suivantes :
Utilisez les API client Apache HBase natives pour interagir avec les données dans HBase :
- Utiliser les API HBase pour Java
- Utiliser le serveur HBase REST
Vous pouvez également accéder à vos données à l'aide de l'application Hue HBase. Cette application est une console que vous pouvez utiliser pour accéder aux données stockées dans Apache HBase.
Ou utilisez Apache Phoenix avec l'un des pilotes Apache Phoenix pour interagir avec les données stockées dans Apache HBase :
- Utiliser le pilote JDBC pour Apache Phoenix
- Utiliser le pilote ODBC pour Apache Phoenix
- Utiliser le pilote Python pour Apache Phoenix
Examinons les concepts d'Apache HBase et d'Apache Phoenix dont vous avez besoin pour le développement de votre application.
Espace de noms
Un espace de noms est un regroupement logique de tables analogue à une base de données dans un système de base de données relationnelle.
Tableaux et lignes
Un ou plusieurs qualificateurs de colonne constituent une ligne ; une ou plusieurs lignes constituent un tableau. Chaque ligne peut être identifiée par une clé de ligne. Lors de l'écriture d'applications, vous pouvez accéder à une ligne ou à une séquence de lignes à l'aide de la clé de ligne unique.
Familles de colonnes
Familles de colonnes définies au moment de la création de la table en fonction de la façon dont elles sont liées les unes aux autres. Les familles de colonnes peuvent avoir des qualificatifs de colonne dans lesquels les valeurs peuvent être stockées. Les qualificatifs de colonne sont aussi parfois simplement appelés colonnes et sont organisés en familles de colonnes. Les familles de colonnes sont situées ensemble dans le stockage.
Les familles de colonnes partitionnent verticalement les données. Si vous avez un cas d'utilisation dans lequel vous souhaitez accéder à un ensemble de qualificatifs de colonne, le partitionnement des familles de colonnes réduira le nombre de fichiers de magasin à lire et améliorera les performances de lecture. Vous devez éviter le partitionnement si vous souhaitez accéder à deux ou plusieurs familles de colonnes en même temps.
La compression et l'encodage sont appliqués au niveau de la famille de colonnes. Il n'est pas nécessaire de déclarer des types de données pour chaque famille de colonnes et une famille de colonnes peut contenir des données de plusieurs types de données.
Composition des tables Apache HBase
Les tables Apache HBase se composent d'une ou plusieurs familles de colonnes et peuvent être divisées en plusieurs régions. Les données de chaque famille de colonnes dans chaque région sont enregistrées sur plusieurs HFiles, qui se trouvent dans HDFS ou dans le stockage d'objets tels que S3 et ADLS.
Chaque région stocke les lignes dans une plage d'espaces de clés spécifique, c'est-à-dire entre une clé de ligne de début et une clé de ligne de fin. Les clés de ligne sont uniques à une région et il n'y a pas deux régions qui se chevauchent. Une région est desservie par un RegionServer à la fois, ce qui garantit la cohérence au sein d'une ligne.
Pour en savoir plus sur le fractionnement et la fusion de régions Apache HBase, consultez le billet de blog ici :https://blog.cloudera.com/apache-hbase-region-splitting-and-merging/
Mise en page des données Apache HBase
Apache HBase excelle dans les cas d'utilisation du traitement des transactions en ligne (OLTP) car il peut exister plusieurs versions de son unité de stockage de base appelée qualificatif de colonne (CQ) basé sur un horodatage. La valeur unique de chaque version de qualificateur de colonne est stockée séparément. Une famille de colonnes peut avoir n'importe quel nombre de cellules et elles peuvent être complètement aléatoires et avoir différents types de données, nombres et noms dans chaque ligne. Vous pouvez stocker n'importe quel nombre de cellules dans une famille de colonnes, mais notez que les qualificatifs de colonne d'une famille de colonnes sont stockés séparément des qualificatifs de colonne des autres familles de colonnes.
Si vous êtes intéressé par la façon dont Apache HBase effectue le contrôle de concurrence multiversion (MVCC), vous pouvez lire ce billet de blog :https://blogs.apache.org/hbase/entry/apache_hbase_internals_locking_and.
Tableaux Apache Phoenix
Les tables Apache Phoenix ont une relation 1:1 avec une table Apache HBase. Vous pouvez choisir de créer une nouvelle table à l'aide d'une instruction Apache Phoenix DDL telle que CREATE TABLE, ou de créer une vue sur une table Apache HBase existante à l'aide de l'instruction VIEW.
Créez, supprimez ou modifiez le contenu d'une table Apache HBase à l'aide des instructions Apache Phoenix DDL. Dans de nombreux cas, vous pourrez peut-être modifier une table Apache Phoenix directement à l'aide des API natives Apache HBase. Ceci n'est pas pris en charge dans Cloudera Operational Database et entraînera des erreurs, des index incohérents, des résultats de requête incorrects et parfois des données corrompues.
Ingestion de données
Vous pouvez utiliser les instructions Apache Phoenix SQL pour ingérer des données dans Cloudera Operational Database (COD). COD est également étroitement intégré aux autres services Cloudera Data Platform. Vous pouvez voir comment utiliser certaines des fonctionnalités d'ingestion de données dans les liens suivants.
- Utilisez Spark ou Hive avec Apache HBase pour ingérer des données. Vous pouvez utiliser le connecteur HBase-Spark. Consultez également une liste des façons dont vous pouvez importer des données dans HBase Importation de données dans HBase.
- Utilisez Spark ou Hive avec Apache Phoenix pour ingérer des données. Vous pouvez utiliser les connecteurs Phoenix-Spark et Phoenix-Hive. Voir Comprendre le connecteur Apache Phoenix-Spark et Comprendre le connecteur Apache Phoenix-Hive.
- Utilisez Cloudera DataFlow (Apache NiFi) pour ingérer des données. Voir Ingestion de données dans Apache HBase dans CDP Public Cloud.
- Utilisez Cloudera Data Engineering (Spark) pour ingérer des données. Voir Cloudera Operational Database – Cloudera Data Engineering using Phoenix.
Commandes Apache Phoenix DML
Vous pouvez utiliser les commandes Apache Phoenix DML telles que UPSERT ou DELETE. Assurez-vous que les commandes DML que vous souhaitez utiliser sont prises en charge par Apache Phoenix. Pour plus d'informations, consultez la référence de grammaire Apache Phoenix.
Interface utilisateur Hue pour accéder aux données
Hue est un éditeur SQL interactif basé sur le Web qui vous permet d'interagir avec les données stockées dans Cloudera Operational Database. Pour plus d'informations sur l'utilisation de Hue avec le service Cloudera Operational Database, consultez Accès à Cloudera Operational Database Hue.
Exécuter des applications sur Data Hub et COD
Cloudera Operational Database prend en charge les applications écrites dans ces langages pris en charge à l'aide d'Apache Phoenix. Vous pouvez également développer des applications Apache HBase à l'aide des API HBase natives pour Java. Nous aborderons plus en détail le développement d'applications et quelques exemples d'applications que vous pourrez utiliser dans les prochains articles de blog.
L'expérience Cloudera Operational Database (COD) permet d'accéder facilement aux informations de connectivité client à partir de l'interface utilisateur. Pour plus d'informations, voir Informations sur la connectivité client pour compiler votre application avec votre COD. Pour plus d'informations, consultez Utilisation d'Apache Phoenix pour stocker et accéder aux données.
Dans CDP Private Cloud Base, vous pouvez trouver ces informations à partir de l'interface utilisateur Apache Knox si vous souhaitez vous connecter au Phoenix Query Server (PQS) via Apache Knox, ou utiliser les pilotes JDBC et les JAR du client Phoenix présents à l'emplacement suivant dans un cluster nœud avec un rôle phoenix-gateway /opt/cloudera/parcels/CDH/lib/phoenix.
Conclusion
Dans les prochains articles, nous examinerons les considérations de développement et la création d'applications, y compris des exemples d'applications.
Vous pouvez consulter des exemples d'applications et de documentation existants pour la base de données opérationnelle Cloudera dans Data Hub et la solution dbPaaS d'expérience Cloudera Operational Database dans les liens suivants :
- Aperçu de l'expérience Cloudera Operational Database
- Démarrage rapide de la base de données opérationnelle Cloudera
- Démarrer avec le modèle de concentrateur de données de base de données opérationnelle
- Création d'une application d'apprentissage automatique avec Cloudera Data Science Workbench et base de données opérationnelle