Как импортировать / экспортировать данные hbase через hdfs (команды hadoop)
Я сохранил свои данные обхода с помощью nutch в Hbase, чья файловая система hdfs. Затем я скопировал свои данные (одну таблицу hbase) из hdfs непосредственно в какой-то локальный каталог по команде
hadoop fs -CopyToLocal /hbase/input ~/Documents/output
после этого я скопировал эти данные обратно в другую hbase (другую систему), выполнив команду
hadoop fs -CopyFromLocal ~/Documents/input /hbase/mydata
он сохраняется в hdfs и когда я использую list
команда в оболочке hbase, она показывает ее как другую таблицу i.e 'mydata', но когда я бегу scan
command, он говорит, что нет таблицы с именем "mydata".
что проблема с вышеуказанной процедурой? Простыми словами:
- Я хочу скопировать таблицу hbase в локальную файловую систему с помощью команды Hadoop
- затем я хочу сохранить его непосредственно в hdfs в другой системе с помощью команды hadoop
- наконец, я хочу, чтобы таблица появилась в hbase и отображала ее данные как исходную таблицу
2 ответов
если вы хотите экспортировать таблицу из одного кластера hbase и импортировать ее в другой, используйте любой из следующих методов:
Использование Hadoop
-
экспорт
$ bin/hadoop jar <path/to/hbase-{version}.jar> export \ <tablename> <outputdir> [<versions> [<starttime> [<endtime>]]
Примечание: скопируйте выходной каталог в hdfs из исходного в целевой кластер
-
импорт
$ bin/hadoop jar <path/to/hbase-{version}.jar> import <tablename> <inputdir>
Примечание: оба outputdir и inputdir находятся в файловую систему HDFS.
Использование Hbase
-
экспорт
$ bin/hbase org.apache.hadoop.hbase.mapreduce.Export \ <tablename> <outputdir> [<versions> [<starttime> [<endtime>]]]
скопируйте выходной каталог в hdfs из исходного в целевой кластер
-
импорт
$ bin/hbase org.apache.hadoop.hbase.mapreduce.Import <tablename> <inputdir>
Если вы можете использовать команду Hbase вместо резервного копирования таблиц hbase, вы можете использовать инструмент HBase ExportSnapshot, который копирует метаданные hfiles,logs и snapshot в другую файловую систему(local/hdfs/s3) с помощью задания map reduce.
-
сделайте снимок таблицы
$ ./bin/hbase shell hbase> snapshot 'myTable', 'myTableSnapshot-122112'
-
экспорт в требуемую файловую систему
$ ./bin/hbase class org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot MySnapshot -copy-to fs://path_to_your_directory
вы можете экспортировать его обратно из локальной файловой системы в hdfs:/ / / srv2: 8082 / hbase и запустите команду restore из оболочки hbase, чтобы восстановить таблицу из моментального снимка.
$ ./bin/hbase shell
hbase> disable 'myTable'
hbase> restore_snapshot 'myTableSnapshot-122112'
ссылки:Снимки Hbase