> 1.Is there a way to take incremental snapshots on HBase tables?
Due to the nature of hbase, when hfiles gets compacted your table will not
share files with the snapshot causing the next snapshot to don't share
hfiles (or share a few) with the previous snapshot. The other approach will
be using logs to have an incremental snapshots but logs contains different
tables, so you may end up with more space used, and for sure more time to
restore since you must replay the logs.
> 2.Can we export snapshots to outside of HDFS(e.g backup server)?
the ExportSnapshot tool takes a destination path as argument, so as long as
the destination filesystem is supported by the FileSystem class you can.
(e.g. you can export with -copy-to=file:///mnt/backup-mount-point/hbase)
> 3.Is it possible to take a snapshot for all tables in one command?
No, but you can do a simple script that does a for each table in
admin.listTable(), admin.snapshot(table, snapshotName)
> 4.Does HBase support to take automatic snapshots based on configured
No, hbase doesn't do job scheduling.
you may use a cron job to execute a shell command, "echo snapshot
'tableName', 'snapshotName' | hbase shell"
> Please also let us know if there is any better way to take HBase tables
There are different solutions that you can use: Replication, CopyTable,
HDFS files copy + CopyTable and maybe others it depends on what you're
There is an article here that explains how to use CopyTable as backup