2014-11-19 3 views
0

Я пытаюсь экспортировать таблицу из кластера1 в кластер2 с помощью моментальных снимков. Однако cluster2 не доступен из CLUSTER1, так что я не могу сделать:ExportSnapshot не удалось загрузить

bin/hbase class org.apache.hadoop.hbase.snapshot.tool.ExportSnapshot -snapshot MySnapshot -copy-to hdfs://cluster2:8020/hbase -mappers 16

Однако, я могу экспортировать в HDFS как:

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot snapshot_my_table -copy-to hdfs://cluster1/export 

Приведенная выше команда создает следующие каталоги:

hdfs://cluster1/export/.hbase-snapshot 
hdfs://cluster1/export/archive 

Я скопировал файлы в «HDFS: //cluster1/export/.hbase-snapshot/snapshot_my_table» в локальной файловой системе, а затем tar.gzip'ed их, а затем УПП 'd их кластер2 через другую машину.

Я Разархивирован их под hdfs://cluster2/export/.hbase-snapshot/

Затем я вошел в Hbase оболочки, и был в состоянии увидеть снимок через list_snapshots.

Однако при выдаче команды clone_snapshot, я получаю:

ERROR: org.apache.hadoop.hbase.snapshot.CorruptedSnapshotException: Corrupted snapshot 'name: "snapshot_my_table" 
table: "my_table" 
creation_time: 1416346483927 
type: FLUSH 
version: 0 
' 
     at org.apache.hadoop.hbase.snapshot.SnapshotReferenceUtil$1.storeFile(SnapshotReferenceUtil.java:176) 
     at org.apache.hadoop.hbase.util.FSVisitor.visitRegionStoreFiles(FSVisitor.java:115) 
     at org.apache.hadoop.hbase.util.FSVisitor.visitTableStoreFiles(FSVisitor.java:81) 
     at org.apache.hadoop.hbase.snapshot.SnapshotReferenceUtil.visitTableStoreFiles(SnapshotReferenceUtil.java:114) 
     at org.apache.hadoop.hbase.snapshot.SnapshotReferenceUtil.verifySnapshot(SnapshotReferenceUtil.java:169) 
     at org.apache.hadoop.hbase.master.snapshot.SnapshotManager.restoreSnapshot(SnapshotManager.java:713) 
     at org.apache.hadoop.hbase.master.HMaster.restoreSnapshot(HMaster.java:3025) 
     at org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java:38247) 
     at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2008) 
     at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:92) 
     at org.apache.hadoop.hbase.ipc.FifoRpcScheduler$1.run(FifoRpcScheduler.java:73) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
     at java.lang.Thread.run(Thread.java:744) 
Caused by: java.io.FileNotFoundException: Unable to open link: org.apache.hadoop.hbase.io.HFileLink locations=[hdfs://cluster2/apps/hbase/data/data/default/my_table/d988362b296868d458b9473126ed391e/r/0ff1b8969c3049cc9f9f9852760de544, hdfs://cluster2/apps/hbase/data/.tmp/data/default/my_table/d988362b296868d458b9473126ed391e/r/0ff1b8969c3049cc9f9f9852760de544, hdfs://cluster2/apps/hbase/data/archive/data/default/my_table/d988362b296868d458b9473126ed391e/r/0ff1b8969c3049cc9f9f9852760de544] 
     at org.apache.hadoop.hbase.io.FileLink.getFileStatus(FileLink.java:376) 
     at org.apache.hadoop.hbase.snapshot.SnapshotReferenceUtil$1.storeFile(SnapshotReferenceUtil.java:174) 
     ... 15 more 

Так что другие файлы мне нужно сделать, чтобы включить в свой экспорт?

Заранее спасибо.

ответ

1

Как вы сказали, экспорт создает два каталога .hbase-snapshot и archive. вам нужны оба .hbase-snapshot - это всего лишь метаданные, данные которых находятся внутри архива.

+0

Спасибо! Он работал после того, как я также экспортировал архив. – user3403657

Смежные вопросы