HbaseテーブルXがあり、その正確なコピーを作成してYという名前を付けたいのですが、誰かがそれをどのように可能にするか教えてもらえますか?
ありがとう
同じクラスターにテーブルをコピーする場合、hbase Shell
でHBaseスナップショットを使用できます。
snapshot 'sourceTable', 'sourceTable-snapshot'
clone_snapshot 'sourceTable-snapshot', 'newTable'
CopyTableコマンドは、HBaseテーブルを複製するのに非常に便利です。次のように使用します。
hbase org.Apache.hadoop.hbase.mapreduce.CopyTable --new.name=Y X;
hbase Shellを使用する
1。 hbase-site.xmlでスナップショットを包括するようにしてください
<property>
<name>hbase.snapshot.enabled</name>
<value>true</value>
</property>
2. hbase>スナップショット 'x'、 'snapshot_x'
3。 hbase> clone_snapshot 'snapshot_x'、 'another_x'
Hbase Shellでバージョンを確認します。
hbase(main):001:0> version
0.90.4, r1150278, Sun Jul 24 15:53:29 PDT 2011
0.94.6の古いバージョンの場合は、mapredeuceジョブを使用する必要があります。スナップショットは0.94.6以降で利用可能です。これが上記の場合、 toby941回答 を使用するか、これらのいずれかを使用できます
A)
./hbase org.Apache.hadoop.hbase.mapreduce.CopyTable
Usage: CopyTable [--rs.class=CLASS] [--rs.impl=IMPL] [--starttime=X] [--endtime=Y] [--new.name=NEW] [--peer.adr=ADR] <tablename>
B-1)
./hbase org.Apache.hadoop.hbase.mapreduce.Export
Usage: Export [-D <property=value>]* <tablename> <outputdir> [<versions> [<starttime> [<endtime>]]]
B-2)次に、好きな名前でインポートします
./hbase org.Apache.hadoop.hbase.mapreduce.Import
Usage: Import <tablename> <inputdir>
古いバージョンのhbase https://issues.Apache.org/jira/browse/HBASE-8742 を使用している場合、スナップショット方法が機能しない場合があります。その場合は、hbaseスキーマを手動でコピーしてから、スナップショットを適用するか、固定バージョンにアップグレードすることをお勧めします。
これは動作します。
hbase org.Apache.hadoop.hbase.mapreduce.Export tableA /hbase_export/tableA
hbase org.Apache.hadoop.hbase.mapreduce.Import /hbase_export/tableA tableAcopy