Как импортировать / экспортировать данные 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".

что проблема с вышеуказанной процедурой? Простыми словами:

  1. Я хочу скопировать таблицу hbase в локальную файловую систему с помощью команды Hadoop
  2. затем я хочу сохранить его непосредственно в hdfs в другой системе с помощью команды hadoop
  3. наконец, я хочу, чтобы таблица появилась в 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, вы можете использовать инструмент 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