Comment faire pour importer/exporter hbase de données via hdfs (hadoop commandes)
J'ai sauvé ma analysé les données par nutch dans Hbase dont le système de fichiers hdfs. Puis j'ai copié mes données (Une table de hbase) à partir de hdfs directement à certains locaux répertoire par la commande
hadoop fs -CopyToLocal /hbase/input ~/Documents/output
Après cela, j'ai copié les données de retour pour une autre hbase (autre système) par la commande suivante
hadoop fs -CopyFromLocal ~/Documents/input /hbase/mydata
Il est enregistré dans hdfs et quand j'utilise list
commande dans hbase shell, il le montre comme une autre table je.e "mydata", mais quand je lance scan
de commande, il affirme qu'il n'existe pas de table avec "mydata" nom.
Quel est le problème avec la procédure ci-dessus?
En termes simples:
- Je veux copier hbase table pour mon système de fichiers local en utilisant une commande hadoop
- Alors, je veux l'enregistrer directement dans hdfs dans un autre système de commande hadoop
- Enfin, je veux de la table pour être apparu dans hbase et afficher ses données que la table d'origine
OriginalL'auteur Shafiq | 2014-09-18
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez exporter la table d'un cluster hbase et les importer dans un autre, utilisez l'une des méthodes suivantes:
L'Utilisation D'Hadoop
Exportation
REMARQUE: Copier le répertoire de sortie dans hdfs, de la source à la destination de cluster
Importation
Remarque: les Deux outputdir et inputdir sont dans hdfs.
L'Aide De Hbase
Exportation
Copier le répertoire de sortie dans hdfs, de la source à la destination de cluster
Importation
Référence: Hbase outil d'exportation et d'importation
Qu'entendez-vous par la copie de hbase table de système de fichiers local? Vous pouvez toujours utiliser hadoop est copyToLocal de commande sur les fichiers hdfs associées à une table, mais il n'y a pas à le faire. Si vous envisagez de copier le tableau à un autre cluster vous d'utiliser la méthode ci-dessus. Même dans la façon dont vous devez copier les fichiers exportés vers le système de fichiers local et de le copier à un autre cluster.
Je veux avoir une sauvegarde de mon analysé les données de disque dur externe( usb, disque dur) de sorte qu'en cas de défaillance de la machine, je peux reconstruire mon cluster. ou, dans l'avenir, si j'ai à adop nouvelle version og hadoop etc. puis j'en ai besoin
Ensuite, vous pouvez exporter et faire une sauvegarde. Si vous il suffit de copier les fichiers liés à la table, vous ne pouvez pas reconstruire le cluster.
a la
bin/hadoop
option fait avec une ancienne version d'Hadoop/Hbase, peut-être? Dans un cadre moderne HBase (au moins 0.96) il n'y a pas un grand pot, et pas de pot avec un nom commehbase-{version}.jar
. Et les pots fournis tous semblent vouloir un nom de classe comme premier argument, et pas seulementexport
.OriginalL'auteur Nanda
Si vous pouvez utiliser la Hbase de commande au lieu de sauvegarde hbase tables, vous pouvez utiliser le Hbase ExportSnapshot Outil de copie de hfiles,journaux et instantané de métadonnées pour les autres systèmes de fichiers(local/hdfs/s3) à l'aide d'une carte de réduire l'emploi.
Prendre l'instantané de la table
$ ./bin/hbase shell
hbase> snapshot 'myTable', 'myTableSnapshot-122112'
Exporter vers le fichier requis système
$ ./bin/hbase class org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot MySnapshot -copy-to fs://path_to_your_directory
Vous pouvez l'exporter vers le système de fichiers local à hdfs:///srv2:8082/hbase et exécuter la commande de restauration de hbase shell de récupérer la table à partir de l'instantané.
Référence:Hbase Instantanés
OriginalL'auteur VishAmdi