Skip to content

Instantly share code, notes, and snippets.

@umbertogriffo
Created February 19, 2016 15:04
Show Gist options
  • Save umbertogriffo/ccc973f7ce9aca143b10 to your computer and use it in GitHub Desktop.
Save umbertogriffo/ccc973f7ce9aca143b10 to your computer and use it in GitHub Desktop.
This code restore the snapshots of all HBase tables saved using the script HBaseBackup.rb (https://gist.github.com/umbertogriffo/fe1bce24f8e9ee68c75f). Tested on CDH-5.4.4-1
# To execute script launch this command on shell: hbase shell HBaseRestore.rb
include Java
java_import org.apache.hadoop.hbase.HBaseConfiguration
java_import org.apache.hadoop.hbase.client.HBaseAdmin
java_import org.apache.hadoop.hbase.snapshot.ExportSnapshot
java_import org.apache.hadoop.hbase.TableExistsException
java_import org.apache.hadoop.util.ToolRunner
@conf = org.apache.hadoop.hbase.HBaseConfiguration.create
@admin = org.apache.hadoop.hbase.client.HBaseAdmin.new(@conf)
def restore_snapshots()
snapshots = @admin.listSnapshots(".*-BACKUP-.*").to_a
snapshots.each { |s|
name = s.name.scan(/(.*)-BACKUP-/)[0][0]
puts "-----> restore table "+name+" from snapshot " + s.name
begin
@admin.cloneSnapshot(s.name.to_java_bytes,name.to_java_bytes)
rescue org.apache.hadoop.hbase.TableExistsException => e
puts "Table Already Exist!"
end
}
end
puts "-----> Starting restore"
restore_snapshots()
puts "-----> Done"
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment