执行命令, 生成一个10g 的表
hbase org.apache.hadoop.hbase.PerformanceEvaluation --compress=SNAPPY --size=10 sequentialWrite 10
生成的表结构如下
hbase(main):001:0> desc 'TestTable'
Table TestTable is ENABLED
TestTable
COLUMN FAMILIES DESCRIPTION
{NAME => 'info0', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSION_BEHAVIOR => 'false', KEEP_DELETED_CEL
LS => 'FALSE', CACHE_DATA_ON_WRITE => 'false', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', R
EPLICATION_SCOPE => '0', BLOOMFILTER => 'ROW', CACHE_INDEX_ON_WRITE => 'false', IN_MEMORY => 'false', CACHE_BLOOMS_ON_
WRITE => 'false', PREFETCH_BLOCKS_ON_OPEN => 'false', COMPRESSION => 'SNAPPY', BLOCKCACHE => 'true', BLOCKSIZE => '655
36', METADATA => {'IN_MEMORY_COMPACTION' => 'NONE'}}
1 row(s)
Took 0.5843 seconds
hbase(main):002:0>
分别查看表的 hdfs 大小 和 总行数
$ hdfs dfs -du -h /hbase/data/default
# 2.6 G /hbase/data/default/TestTable
$ hbase org.apache.hadoop.hbase.mapreduce.RowCounter 'TestTable'
# ...
# org.apache.hadoop.hbase.mapreduce.RowCounter$RowCounterMapper$Counters
# ROWS=10485760
# ...
进入 hbase shell, 执行命令
snapshot 'TestTable', 'TestTable-Snapshot'
list_snapshots # 查看生成的 snapshot
退出 hbase shell 执行命令导出快照到 hdfs 路径中
hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot TestTable-Snapshot -copy-to hdfs://txz-data0:9820/backup/hbase/TestTable-Snapshot
查看生成的快照文件
查看快照文件大小
可以看到导出快照实际是把快照的信息及快照记录的所有数据文件分别导出到指定目录下的.hbase-snapshot和archive目录下。
删除 TestTable
表, 删除快照, 删除archive 文件
disable 'TestTable'
drop 'TestTable'
delete_snapshot 'TestTable-Snapshot'