[ 
https://issues.apache.org/jira/browse/HBASE-10900?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13965804#comment-13965804
 ] 

Demai Ni commented on HBASE-10900:
----------------------------------

[~tedyu], thanks. I can move the code to hbase-client module and within a new 
'backup' package there. 

[~tedyu] and [~mbertozzi], many thanks for your input through review board. I 
am going through them right now, and will incorporate in the next version of 
the patch. 

Demai  

> FULL table backup and restore
> -----------------------------
>
>                 Key: HBASE-10900
>                 URL: https://issues.apache.org/jira/browse/HBASE-10900
>             Project: HBase
>          Issue Type: Task
>            Reporter: Demai Ni
>            Assignee: Demai Ni
>             Fix For: 1.0.0
>
>         Attachments: HBASE-10900-fullbackup-trunk-v1.patch
>
>
> h2. Feature Description
> This is a subtask of 
> [HBase-7912|https://issues.apache.org/jira/browse/HBASE-7912] to support FULL 
> backup/restore, and will complete the following function:
> {code:title=Backup Restore example|borderStyle=solid}
> /* backup from sourcecluster to targetcluster                                 
>  */
> /* if no table name specified, all tables from source cluster will be 
> backuped */
> [sourcecluster]$ hbase backup create full 
> hdfs://hostname.targetcluster.org:9000/userid/backupdir t1_dn,t2_dn,t3_dn
> /* restore on targetcluser, this is a local restore                           
>                   */
> /* backup_1396650096738 - backup image name                                   
>                   */
> /* t1_dn,etc are the original table names. All tables will be restored if not 
> specified         */
> /* t1_dn_restore, etc. are the restored table. if not specified, orginal 
> table name will be used*/
> [targetcluster]$ hbase restore /userid/backupdir backup_1396650096738 
> t1_dn,t2_dn,t3_dn t1_dn_restore,t2_dn_restore,t3_dn_restore
> /* restore from targetcluster back to source cluster, this is a remote restore
> [sourcecluster]$ hbase restore 
> hdfs://hostname.targetcluster.org:9000/userid/backupdir backup_1396650096738 
> t1_dn,t2_dn,t3_dn t1_dn_restore,t2_dn_restore,t3_dn_restore
> {code}
> h2. Detail layout and frame work for the next jiras
> The patch is a wrapper of the existing snapshot and exportSnapshot, and will 
> use as the base framework for the over-all solution of  
> [HBase-7912|https://issues.apache.org/jira/browse/HBASE-7912] as described 
> below:
> * *bin/hbase*          : end-user command line interface to invoke 
> BackupClient and RestoreClient
> * *BackupClient.java*  : 'main' entry for backup operations. This patch will 
> only support 'full' backup. In future jiras, will support:
> ** *create* incremental backup
> ** *cancel* an ongoing backup
> ** *delete* an exisitng backup image
> ** *describe* the detailed informaiton of backup image
> ** show *history* of all successful backups 
> ** show the *status* of the latest backup request
> ** *convert* incremental backup WAL files into HFiles.  either on-the-fly 
> during create or after create
> ** *merge* backup image
> ** *stop* backup a table of existing backup image
> ** *show* tables of a backup image 
> * *BackupCommands.java* : a place to keep all the command usages and options
> * *BackupManager.java*  : handle backup requests on server-side, create 
> BACKUP ZOOKEEPER nodes to keep track backup. The timestamps kept in zookeeper 
> will be used for future incremental backup (not included in this jira). 
> Create BackupContext and DispatchRequest. 
> * *BackupHandler.java*  : in this patch, it is a wrapper of snapshot and 
> exportsnapshot. In future jiras, 
> ** *timestamps* info will be recorded in ZK
> ** carry on *incremental* backup.  
> ** update backup *progress*
> ** set flags of *status*
> ** build up *backupManifest* file(in this jira only limited info for 
> fullback. later on, timestamps and dependency of multipl backup images are 
> also recorded here)
> ** clean up after *failed* backup 
> ** clean up after *cancelled* backup
> ** allow on-the-fly *convert* during incremental backup 
> * *BackupContext.java* : encapsulate backup information like backup ID, table 
> names, directory info, phase, TimeStamps of backup progress, size of data, 
> ancestor info, etc. 
> * *BackupCopier.java*  : the copying operation.  Later on, to support 
> progress report and mapper estimation; and extends DisCp for progress 
> updating to ZK during backup. 
> * *BackupExcpetion.java*: to handle exception from backup/restore
> * *BackupManifest.java* : encapsulate all the backup image information. The 
> manifest info will be bundled as manifest file together with data. So that 
> each backup image will contain all the info needed for restore. 
> * *BackupStatus.java*   : encapsulate backup status at table level during 
> backup progress
> * *BackupUtil.java*     : utility methods during backup process
> * *RestoreClient.java*  : 'main' entry for restore operations. This patch 
> will only support 'full' backup. 
> * *RestoreUtil.java*    : utility methods during restore process
> * *ExportSnapshot.java* : remove 'final' so that another class 
> SnapshotCopy.java can extends from it
> * *SnapshotCopy.java*   : only a wrapper at this moment. But will be extended 
> to keep track progress(maybe should implemented in ExportSnapshot directly?)
> * *HConstants.java*     : add the constants used by backup/restore code.
> h2. Questions for your inputs
> * currently, the code is under *hbase-sever* because it already contain a 
> package name called 'backup'. Another place is *hbase-client*. Any 
> prefereence?
> * Is bin/hbase the right place as CLI interface? another place would be hbase 
> shell. 



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to