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:
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
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