web-dev-qa-db-fra.com

Comment importer / exporter des données hbase via hdfs (commandes hadoop)

J'ai enregistré mes données analysées par nutch dans Hbase dont le système de fichiers est hdfs. Ensuite, j'ai copié mes données (une table de base) de hdfs directement dans un répertoire local par commande

hadoop fs -CopyToLocal /hbase/input ~/Documents/output

Après cela, j'ai copié ces données vers une autre base (autre système) en suivant la commande

hadoop fs -CopyFromLocal ~/Documents/input /hbase/mydata

Il est enregistré dans hdfs et lorsque j'utilise la commande list dans le shell hbase, il l'affiche sous la forme d'une autre table, c'est-à-dire "mes données", mais lorsque j'exécute la commande scan, il indique qu'il n'y a pas de table avec " le nom de mes données.

Quel est le problème avec la procédure ci-dessus? En termes simples:

  1. Je souhaite copier la table hbase sur mon système de fichiers local à l'aide d'une commande hadoop
  2. Ensuite, je veux l'enregistrer directement dans hdfs dans un autre système par commande hadoop
  3. Enfin, je veux que le tableau apparaisse dans hbase et affiche ses données comme le tableau d'origine
9
Shafiq

Si vous souhaitez exporter la table d'un cluster hbase et l'importer dans un autre, utilisez l'une des méthodes suivantes:

Utilisation de Hadoop

  • Exportation

    $ bin/hadoop jar <path/to/hbase-{version}.jar> export \
         <tablename> <outputdir> [<versions> [<starttime> [<endtime>]]
    

    REMARQUE: Copiez le répertoire de sortie en hdfs du cluster source vers le cluster de destination

  • Importer

    $ bin/hadoop jar <path/to/hbase-{version}.jar> import <tablename> <inputdir>
    

Remarque: Outputdir et inputdir sont dans hdfs.

Utilisation de Hbase

  • Exportation

    $ bin/hbase org.Apache.hadoop.hbase.mapreduce.Export \
       <tablename> <outputdir> [<versions> [<starttime> [<endtime>]]]
    
  • Copiez le répertoire de sortie dans hdfs du cluster source vers le cluster de destination

  • Importer

    $ bin/hbase org.Apache.hadoop.hbase.mapreduce.Import <tablename> <inputdir>
    

    Référence: outil Hbase pour exporter et importer

21
Nanda

Si vous pouvez utiliser la commande Hbase à la place pour sauvegarder les tables hbase, vous pouvez utiliser l'outil Hbase ExportSnapshot qui copie les fichiers hf, les journaux et les métadonnées de capture instantanée vers un autre système de fichiers (local/hdfs/s3) à l'aide d'un travail de réduction de carte.

  • Prenez un instantané de la table

    $ ./bin/hbase Shell hbase> snapshot 'myTable', 'myTableSnapshot-122112'

  • Exporter vers le système de fichiers requis

    $ ./bin/hbase class org.Apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot MySnapshot -copy-to fs://path_to_your_directory

Vous pouvez l'exporter à partir du système de fichiers local vers hdfs: /// srv2: 8082/hbase et exécuter la commande de restauration à partir de hbase Shell pour récupérer la table à partir de l'instantané.

 $ ./bin/hbase Shell
 hbase> disable 'myTable'
 hbase> restore_snapshot 'myTableSnapshot-122112'

Référence: Instantanés Hbase

4
VishAmdi