[
https://issues.apache.org/jira/browse/HBASE-15469?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15203878#comment-15203878
]
Jianwei Cui commented on HBASE-15469:
-------------------------------------
For our case, the goal is to copy existed data for given families and clone the
snapshot, so that creating a new table with only the subset families is a
better choice. For the restore case, the goal is to rollback the table to some
history state? the snapshot with only a subset of families may not represent
any history state of the table, so that should not be used for the restore
purpose.
{quote}
we may block the restore of snapshots with only a subset of families. and that
will solve the strange situation of restore.
and when we clone we just create a new table with only the subset. In theory
this is more clear for the end user.
{quote}
Agreed with your analysis [~mbertozzi], and also expect other opinions and
cases. Thanks!
> Take snapshot by family
> -----------------------
>
> Key: HBASE-15469
> URL: https://issues.apache.org/jira/browse/HBASE-15469
> Project: HBase
> Issue Type: Improvement
> Components: snapshots
> Affects Versions: 2.0.0
> Reporter: Jianwei Cui
> Attachments: HBASE-15469-v1.patch, HBASE-15469-v2.patch
>
>
> In our production environment, there are some 'wide' tables in offline
> cluster. The 'wide' table has a number of families, different applications
> will access different families of the table through MapReduce. When some
> application starting to provide online service, we need to copy needed
> families from offline cluster to online cluster. For future write, the
> inter-cluster replication supports setting families for table, we can use it
> to copy future edits for needed families. For existed data, we can take
> snapshot of the table on offline cluster, then exploit {{ExportSnapshot}} to
> copy snapshot to online cluster and clone the snapshot. However, we can only
> take snapshot for the whole table in which many families are not needed for
> the application, this will lead unnecessary data copy. I think it is useful
> to support taking snapshot by family, so that we can only copy needed data.
> Possible solution to support such function:
> 1. Add family names field to the protobuf definition of
> {{SnapshotDescription}}
> 2. Allow to set families when taking snapshot in hbase shell, such as:
> {code}
> snapshot 'tableName', 'snapshotName', 'FamilyA', 'FamilyB', {SKIP_FLUSH =>
> true}
> {code}
> 3. Add family names to {{SnapshotDescription}} in client side
> 4. Read family names from {{SnapshotDescription}} in Master/Regionserver,
> keep only requested families when taking snapshot for region.
> Discussions and suggestions are welcomed.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)