From e50faa3233ddccc4b3ec81b83bed03c59ff885a4 Mon Sep 17 00:00:00 2001 From: kyotoYaho Date: Fri, 3 Jun 2016 19:49:13 +0800 Subject: [PATCH] KYLIN-1761: Fetch part of metadata to local --- build/bin/metastore.sh | 14 ++++++++++++++ .../org/apache/kylin/common/persistence/ResourceTool.java | 10 ++++++++++ .../kylin/storage/hbase/steps/SandboxMetastoreCLI.java | 3 +++ 3 files changed, 27 insertions(+) diff --git a/build/bin/metastore.sh b/build/bin/metastore.sh index 7573270..1592043 100755 --- a/build/bin/metastore.sh +++ b/build/bin/metastore.sh @@ -40,6 +40,19 @@ then ${KYLIN_HOME}/bin/kylin.sh org.apache.kylin.common.persistence.ResourceTool download ${_file} echo "metadata store backed up to ${_file}" +elif [ "$1" == "fetch" ] +then + + _file=$2 + + _now=$(date +"%Y_%m_%d_%H_%M_%S") + _fileDst="${KYLIN_HOME}/meta_backups/meta_${_now}" + echo "Starting restoring $_fileDst" + mkdir -p $_fileDst + + ${KYLIN_HOME}/bin/kylin.sh org.apache.kylin.common.persistence.ResourceTool fetch $_fileDst $_file + echo "metadata store backed up to $_fileDst" + elif [ "$1" == "restore" ] then @@ -80,6 +93,7 @@ then else echo "usage: metastore.sh backup" + echo " metastore.sh fetch DATA" echo " metastore.sh reset" echo " metastore.sh restore PATH_TO_LOCAL_META" echo " metastore.sh list RESOURCE_PATH" diff --git a/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceTool.java b/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceTool.java index c0f3fd9..b10856f 100644 --- a/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceTool.java +++ b/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceTool.java @@ -67,6 +67,9 @@ public class ResourceTool { case "download": copy(KylinConfig.getInstanceFromEnv(), KylinConfig.createInstanceFromUri(args[1])); break; + case "fetch": + copy(KylinConfig.getInstanceFromEnv(), KylinConfig.createInstanceFromUri(args[1]), args[2]); + break; case "upload": copy(KylinConfig.createInstanceFromUri(args[1]), KylinConfig.getInstanceFromEnv()); break; @@ -103,6 +106,13 @@ public class ResourceTool { System.out.println("" + result); } + public static void copy(KylinConfig srcConfig, KylinConfig dstConfig, String path) throws IOException { + ResourceStore src = ResourceStore.getStore(srcConfig); + ResourceStore dst = ResourceStore.getStore(dstConfig); + + copyR(src, dst, path); + } + public static void copy(KylinConfig srcConfig, KylinConfig dstConfig, List paths) throws IOException { ResourceStore src = ResourceStore.getStore(srcConfig); ResourceStore dst = ResourceStore.getStore(dstConfig); diff --git a/storage-hbase/src/test/java/org/apache/kylin/storage/hbase/steps/SandboxMetastoreCLI.java b/storage-hbase/src/test/java/org/apache/kylin/storage/hbase/steps/SandboxMetastoreCLI.java index fa1687b..e49640e 100644 --- a/storage-hbase/src/test/java/org/apache/kylin/storage/hbase/steps/SandboxMetastoreCLI.java +++ b/storage-hbase/src/test/java/org/apache/kylin/storage/hbase/steps/SandboxMetastoreCLI.java @@ -56,6 +56,8 @@ public class SandboxMetastoreCLI { ResourceTool.main(new String[] { "reset" }); }else if ("download".equalsIgnoreCase(args[0])) { ResourceTool.main(new String[] { "download", args[1] }); + } else if ("fetch".equalsIgnoreCase(args[0])) { + ResourceTool.main(new String[] { "fetch", args[1], args[2]}); } else if ("upload".equalsIgnoreCase(args[0])) { ResourceTool.main(new String[] { "upload", args[1] }); } else { @@ -65,6 +67,7 @@ public class SandboxMetastoreCLI { private static void printUsage() { logger.info("Usage: SandboxMetastoreCLI download toFolder"); + logger.info("Usage: SandboxMetastoreCLI fecth toFolder data"); logger.info("Usage: SandboxMetastoreCLI upload fromFolder"); } } -- 2.5.4 (Apple Git-61)