HBase
 sql >> Base de données >  >> NoSQL >> HBase

Présentation des instantanés Apache HBase

La version actuelle (4.2) de CDH - la distribution 100 % open source de Cloudera d'Apache Hadoop et des projets associés (y compris Apache HBase) - a introduit une nouvelle fonctionnalité HBase, récemment arrivée dans le tronc, qui permet à un administrateur de prendre un instantané d'un tableau.

Avant CDH 4.2, la seule façon de sauvegarder ou de cloner une table était d'utiliser Copier/Exporter la table, ou après avoir désactivé la table, copier tous les hfiles dans HDFS. Copier/Exporter la table est un ensemble d'outils qui utilise MapReduce pour analyser et copier la table, mais avec un impact direct sur les performances du serveur de région. La désactivation de la table arrête toutes les lectures et écritures, ce qui sera presque toujours inacceptable.

En revanche, les instantanés HBase permettent à un administrateur de cloner une table sans copies de données et avec un impact minimal sur les serveurs de région. L'exportation de l'instantané vers un autre cluster n'affecte directement aucun des serveurs de région ; l'exportation n'est qu'un distcp avec un peu de logique en plus.

Voici quelques exemples d'utilisation des instantanés HBase :

  • Récupération à partir d'erreurs utilisateur/application
    • Restaurer/Récupérer à partir d'un état sûr connu.
    • Affichez les instantanés précédents et fusionnez de manière sélective la différence dans la production.
    • Enregistrer un instantané juste avant une mise à niveau ou une modification majeure de l'application.
  • Audit et/ou création de rapports sur les vues de données à un moment précis
    • Capturer des données mensuelles à des fins de conformité
    • Exécuter des rapports de fin de journée/mois/trimestre.
  • Test d'application
    • Testez les modifications de schéma ou d'application sur des données similaires à celles en production à partir d'un instantané, puis jetez-les. Par exemple :prenez un instantané, créez une nouvelle table à partir du contenu de l'instantané (schéma plus données) et manipulez la nouvelle table en modifiant le schéma, en ajoutant et en supprimant des lignes, etc. (La table d'origine, l'instantané et la nouvelle table restent mutuellement indépendants.)
  • Déchargement du travail
    • Prenez un instantané, exportez-le vers un autre cluster et exécutez vos tâches MapReduce. Étant donné que l'instantané d'exportation fonctionne au niveau HDFS, vous ne ralentissez pas votre cluster HBase principal autant que CopyTable.

Qu'est-ce qu'un instantané ?

Un instantané est un ensemble d'informations de métadonnées qui permet à un administrateur de revenir à un état précédent de la table. Un instantané n'est pas une copie de la table; c'est juste une liste de noms de fichiers et ne copie pas les données. Une restauration d'instantané complète signifie que vous revenez au "schéma de table" précédent et que vous récupérez vos données précédentes en perdant toutes les modifications apportées depuis la prise de l'instantané.

Opérations

  • Prendre un instantané : cette opération tente de prendre un instantané sur une table spécifiée. L'opération peut échouer si les régions se déplacent pendant l'équilibrage, la division ou la fusion.
  • Cloner un instantané : cette opération crée une nouvelle table en utilisant le même schéma et avec les mêmes données présentes dans l'instantané spécifié. Le résultat de cette opération est une nouvelle table entièrement fonctionnelle qui peut être modifiée sans impact sur la table d'origine ou l'instantané.
  • Restaurer un instantané : cette opération ramène le schéma et les données de la table à l'état d'instantané. (Remarque :cette opération annule toutes les modifications apportées depuis la prise de l'instantané.)
  • Supprimer un instantané : cette opération supprime un instantané du système, libérant ainsi de l'espace disque non partagé, sans affecter les clones ou les autres instantanés.
  • Exporter un instantané : cette opération copie les données et les métadonnées de l'instantané vers un autre cluster. L'opération n'implique que HDFS, il n'y a donc aucune communication avec le maître ou les serveurs de région, et donc le cluster HBase peut être en panne.

Instantané sans copie, restauration, clonage

La principale différence entre un instantané et un CopyTable/ExportTable est que les opérations d'instantané n'écrivent que des métadonnées. Il n'y a pas de copies massives de données impliquées.

L'un des principaux principes de conception de HBase est qu'une fois qu'un fichier est écrit, il ne sera jamais modifié. Avoir des fichiers immuables signifie qu'un instantané garde simplement une trace des fichiers utilisés au moment de l'opération d'instantané, et lors d'un compactage, il est de la responsabilité de l'instantané d'informer le système que le fichier ne doit pas être supprimé mais plutôt archivé.

Le même principe s'applique à une opération de clonage ou de restauration. Étant donné que les fichiers sont immuables, une nouvelle table est créée avec uniquement des "liens" vers les fichiers référencés par l'instantané.

Exporter l'instantané est la seule opération qui nécessite une copie des données, puisque l'autre cluster n'a pas les fichiers de données.

Exporter un instantané ou copier/exporter un tableau

Outre les meilleures garanties de cohérence qu'un instantané peut fournir par rapport à un travail de copie/exportation, la principale différence entre l'exportation d'un instantané et la copie/exportation d'une table est que ExportSnapshot fonctionne au niveau HDFS. Cela signifie que les serveurs maître et de région ne sont pas impliqués dans ces opérations. Par conséquent, aucun cache inutile pour les données n'est créé et il n'y a pas de déclenchement de pauses GC supplémentaires en raison du nombre d'objets créés pendant le processus d'analyse. L'impact sur les performances du cluster HBase provient de la charge de travail supplémentaire du réseau et du disque subie par les DataNodes.

HBase Shell :opérations d'instantané

Confirmez que la prise en charge des instantanés est activée en vérifiant si le hbase.snapshot.enabled La propriété dans hbase-site.xml est définie sur true. Pour prendre un instantané d'une table spécifiée, utilisez le snapshot commande. (Aucune copie de fichier n'est effectuée)

hbase> snapshot ‘tableName’, ‘snapshotName’

Pour lister tous les instantanés, utilisez le list_snapshot commande. il affichera le nom de l'instantané, la table source et la date et l'heure de création.

hbase> list_snapshots
SNAPSHOT               TABLE + CREATION TIME
 TestSnapshot          TestTable (Mon Feb 25 21:13:49 +0000 2013)

Pour supprimer un instantané, utilisez le delete_snapshot commande. La suppression d'un instantané n'a pas d'incidence sur les tables clonées ni sur les autres instantanés pris ultérieurement.

hbase> delete_snapshot 'snapshotName'

Pour créer une nouvelle table à partir d'un instantané spécifié (clone), utilisez le clone_snapshot commande. Aucune copie de données n'est effectuée, vous n'utilisez donc pas deux fois plus d'espace pour les mêmes données.

hbase> clone_snapshot 'snapshotName', 'newTableName'

Pour remplacer le schéma/les données de la table actuelle par un contenu d'instantané spécifié, utilisez le restore_snapshot  commande.

hbase> restore_snapshot 'snapshotName'

Pour exporter un instantané existant vers un autre cluster, utilisez le ExportSnapshot outil. L'exportation n'a pas d'impact sur la charge de travail RegionServers, elle fonctionne au niveau HDFS et vous devez spécifier un emplacement HDFS (le hbase.rootdir de l'autre cluster).

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot
SnapshotName -copy-to hdfs:///srv2:8082/hbase

Limites actuelles

Les instantanés reposent sur certaines hypothèses, et il existe actuellement quelques outils qui ne sont pas entièrement intégrés à la nouvelle fonctionnalité :

  • La fusion de régions référencées par un instantané entraîne une perte de données sur l'instantané et sur les tables clonées.
  • La restauration d'une table avec la réplication activée pour la table restaurée aboutit à la désynchronisation des deux clusters. La table n'est pas restaurée sur le réplica.

Conclusion

Actuellement, la fonctionnalité d'instantané inclut toutes les fonctionnalités de base requises, mais il reste encore beaucoup de travail à faire, y compris les métriques, l'intégration de l'interface utilisateur Web, les optimisations de l'utilisation du disque et plus encore.

Pour en savoir plus sur la configuration de HBase et l'utilisation des instantanés, consultez la documentation.

Matteo Bertozzi est un ingénieur logiciel de l'équipe de la plate-forme et un committer HBase.