Repository: hbase
Updated Branches:
refs/heads/0.98 dc145552c -> 98adbf186
HBASE-12892 Add a class to allow taking a snapshot from the command line
Conflicts:
bin/hbase
hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/CreateSnapshot.java
Amending-Author: Andrew Purtell <[email protected]>
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/98adbf18
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/98adbf18
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/98adbf18
Branch: refs/heads/0.98
Commit: 98adbf186ee06089ff38083e8dc1358c712f4b44
Parents: dc14555
Author: Elliott Clark <[email protected]>
Authored: Mon Jan 26 11:48:41 2015 -0800
Committer: Andrew Purtell <[email protected]>
Committed: Mon Jan 26 11:48:41 2015 -0800
----------------------------------------------------------------------
bin/hbase | 3 +
.../hadoop/hbase/snapshot/CreateSnapshot.java | 80 ++++++++++++++++++++
2 files changed, 83 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/98adbf18/bin/hbase
----------------------------------------------------------------------
diff --git a/bin/hbase b/bin/hbase
index 41620f0..3d87c0f 100755
--- a/bin/hbase
+++ b/bin/hbase
@@ -84,6 +84,7 @@ if [ $# = 0 ]; then
echo " shell Run the HBase shell"
echo " hbck Run the hbase 'fsck' tool"
echo " hlog Write-ahead-log analyzer"
+ echo " snapshot Create a new snapshot of a table"
echo " hfile Store file analyzer"
echo " zkcli Run the ZooKeeper shell"
echo " upgrade Upgrade hbase"
@@ -297,6 +298,8 @@ elif [ "$COMMAND" = "zkcli" ] ; then
CLASS="org.apache.hadoop.hbase.zookeeper.ZooKeeperMainServer"
elif [ "$COMMAND" = "upgrade" ] ; then
CLASS="org.apache.hadoop.hbase.migration.UpgradeTo96"
+elif [ "$COMMAND" = "snapshot" ] ; then
+ CLASS="org.apache.hadoop.hbase.snapshot.CreateSnapshot"
elif [ "$COMMAND" = "master" ] ; then
CLASS='org.apache.hadoop.hbase.master.HMaster'
if [ "$1" != "stop" ] && [ "$1" != "clear" ] ; then
http://git-wip-us.apache.org/repos/asf/hbase/blob/98adbf18/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/CreateSnapshot.java
----------------------------------------------------------------------
diff --git
a/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/CreateSnapshot.java
b/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/CreateSnapshot.java
new file mode 100644
index 0000000..e135143
--- /dev/null
+++
b/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/CreateSnapshot.java
@@ -0,0 +1,80 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hbase.snapshot;
+
+import org.apache.commons.cli.CommandLine;
+import org.apache.hadoop.hbase.TableName;
+import org.apache.hadoop.hbase.client.HBaseAdmin;
+import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos;
+import org.apache.hadoop.hbase.util.AbstractHBaseTool;
+
+import java.util.Arrays;
+
+
+/**
+ * This is a command line class that will snapshot a given table.
+ */
+public class CreateSnapshot extends AbstractHBaseTool {
+ private String tableName = null;
+ private String snapshotName = null;
+ private String snapshotType = null;
+
+ public static void main(String[] args) {
+ new CreateSnapshot().doStaticMain(args);
+ }
+
+ @Override
+ protected void addOptions() {
+ this.addRequiredOptWithArg("t", "table", "The name of the table");
+ this.addRequiredOptWithArg("n", "name", "The name of the created
snapshot");
+ this.addOptWithArg("s", "snapshot_type",
+ "Snapshot Type. FLUSH is default. Posible values are "
+ +
Arrays.toString(HBaseProtos.SnapshotDescription.Type.values()));
+ }
+
+ @Override
+ protected void processOptions(CommandLine cmd) {
+ this.tableName = cmd.getOptionValue('t');
+ this.snapshotName = cmd.getOptionValue('n');
+ this.snapshotType = cmd.getOptionValue('s');
+
+ }
+
+ @Override
+ protected int doWork() throws Exception {
+ HBaseAdmin admin = null;
+ try {
+ admin = new HBaseAdmin(conf);
+ HBaseProtos.SnapshotDescription.Type type =
HBaseProtos.SnapshotDescription.Type.FLUSH;
+ if (snapshotType != null) {
+ type =
HBaseProtos.SnapshotDescription.Type.valueOf(snapshotName.toUpperCase());
+ }
+
+ admin.snapshot(snapshotName, TableName.valueOf(tableName), type);
+ } catch (Exception e) {
+ return -1;
+ } finally {
+ if (admin != null) {
+ admin.close();
+ }
+ }
+ return 0;
+ }
+
+}