You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2016/05/01 08:29:18 UTC

[1/2] kylin git commit: KYLIN-1614 Script entry for job diagnosis

Repository: kylin
Updated Branches:
  refs/heads/master e47a64816 -> b7f03986f


KYLIN-1614 Script entry for job diagnosis


Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/b7f03986
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/b7f03986
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/b7f03986

Branch: refs/heads/master
Commit: b7f03986f7f6fbf55b01c02637507f8cca0ef6b6
Parents: 0308fa8
Author: lidongsjtu <li...@apache.org>
Authored: Sun May 1 14:13:56 2016 +0800
Committer: lidongsjtu <li...@apache.org>
Committed: Sun May 1 14:14:18 2016 +0800

----------------------------------------------------------------------
 build/bin/kylin.sh                              | 13 ++++++----
 .../kylin/tool/AbstractInfoExtractor.java       | 25 ++++++++++----------
 .../apache/kylin/tool/ClientEnvExtractor.java   |  1 +
 .../org/apache/kylin/tool/DiagnosisInfoCLI.java |  8 -------
 .../apache/kylin/tool/HBaseUsageExtractor.java  |  1 +
 5 files changed, 24 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/b7f03986/build/bin/kylin.sh
----------------------------------------------------------------------
diff --git a/build/bin/kylin.sh b/build/bin/kylin.sh
index 34014d3..7ceae69 100644
--- a/build/bin/kylin.sh
+++ b/build/bin/kylin.sh
@@ -201,10 +201,10 @@ then
 
 elif [ "$1" = "diag" ]
 then
-    project="$2"
-    if [ -z "$project" ]
+    patient="$2"
+    if [ -z "$patient" ]
     then
-        echo "You need to specify a project for diagnosis."
+        echo "You need to specify a Project or Job Id for diagnosis."
         exit 1
     fi
 
@@ -216,7 +216,12 @@ then
     fi
 
     export HBASE_CLASSPATH=${KYLIN_HOME}/lib/*
-    exec hbase ${KYLIN_EXTRA_START_OPTS} -Dlog4j.configuration=kylin-log4j.properties org.apache.kylin.tool.DiagnosisInfoCLI -project $project -destDir $destDir
+
+    if [ ${#patient} -gt 31 ]; then
+        exec hbase ${KYLIN_EXTRA_START_OPTS} -Dlog4j.configuration=kylin-log4j.properties org.apache.kylin.tool.JobDiagnosisInfoCLI -jobId $patient -destDir $destDir
+    else
+        exec hbase ${KYLIN_EXTRA_START_OPTS} -Dlog4j.configuration=kylin-log4j.properties org.apache.kylin.tool.DiagnosisInfoCLI -project $patient -destDir $destDir
+    fi
     exit 0
 
 # tool command

http://git-wip-us.apache.org/repos/asf/kylin/blob/b7f03986/tool/src/main/java/org/apache/kylin/tool/AbstractInfoExtractor.java
----------------------------------------------------------------------
diff --git a/tool/src/main/java/org/apache/kylin/tool/AbstractInfoExtractor.java b/tool/src/main/java/org/apache/kylin/tool/AbstractInfoExtractor.java
index 4a5f31e..42449e5 100644
--- a/tool/src/main/java/org/apache/kylin/tool/AbstractInfoExtractor.java
+++ b/tool/src/main/java/org/apache/kylin/tool/AbstractInfoExtractor.java
@@ -20,6 +20,7 @@
 package org.apache.kylin.tool;
 
 import java.io.File;
+import java.io.IOException;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 
@@ -28,6 +29,7 @@ import org.apache.commons.cli.OptionBuilder;
 import org.apache.commons.cli.Options;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang.StringUtils;
+import org.apache.kylin.common.KylinConfig;
 import org.apache.kylin.common.KylinVersion;
 import org.apache.kylin.common.util.AbstractApplication;
 import org.apache.kylin.common.util.OptionsHelper;
@@ -48,6 +50,7 @@ public abstract class AbstractInfoExtractor extends AbstractApplication {
     private static final Option OPTION_SUBMODULE = OptionBuilder.withArgName("submodule").hasArg().isRequired(false).withDescription("specify whether this is a submodule of other CLI tool").create("submodule");
 
     private static final String DEFAULT_PACKAGE_TYPE = "base";
+    private static final String COMMIT_SHA1_FILE = "commit_SHA1";
 
     protected final Options options;
 
@@ -115,18 +118,16 @@ public abstract class AbstractInfoExtractor extends AbstractApplication {
         }
     }
 
-    private void dumpBasicDiagInfo() {
-        try {
-            String output = KylinVersion.getKylinClientInformation() + "\n";
-            FileUtils.writeStringToFile(new File(exportDir, "kylin_env"), output);
-
-            StringBuilder basicSb = new StringBuilder();
-            basicSb.append("MetaStoreID: ").append(ToolUtil.getHBaseMetaStoreId()).append("\n");
-            basicSb.append("PackageType: ").append(packageType.toUpperCase()).append("\n");
-            FileUtils.writeStringToFile(new File(exportDir, "info"), basicSb.toString());
-        } catch (Exception e) {
-            logger.warn("Error in export process info.", e);
-        }
+    private void dumpBasicDiagInfo() throws IOException {
+        FileUtils.copyFileToDirectory(new File(KylinConfig.getKylinHome(), COMMIT_SHA1_FILE), exportDir);
+
+        String output = KylinVersion.getKylinClientInformation() + "\n";
+        FileUtils.writeStringToFile(new File(exportDir, "kylin_env"), output);
+
+        StringBuilder basicSb = new StringBuilder();
+        basicSb.append("MetaStoreID: ").append(ToolUtil.getHBaseMetaStoreId()).append("\n");
+        basicSb.append("PackageType: ").append(packageType.toUpperCase()).append("\n");
+        FileUtils.writeStringToFile(new File(exportDir, "info"), basicSb.toString());
     }
 
     protected abstract void executeExtract(OptionsHelper optionsHelper, File exportDir) throws Exception;

http://git-wip-us.apache.org/repos/asf/kylin/blob/b7f03986/tool/src/main/java/org/apache/kylin/tool/ClientEnvExtractor.java
----------------------------------------------------------------------
diff --git a/tool/src/main/java/org/apache/kylin/tool/ClientEnvExtractor.java b/tool/src/main/java/org/apache/kylin/tool/ClientEnvExtractor.java
index 01908be..5e170f8 100644
--- a/tool/src/main/java/org/apache/kylin/tool/ClientEnvExtractor.java
+++ b/tool/src/main/java/org/apache/kylin/tool/ClientEnvExtractor.java
@@ -40,6 +40,7 @@ public class ClientEnvExtractor extends AbstractInfoExtractor {
 
     public ClientEnvExtractor() throws IOException {
         super();
+
         packageType = "client";
         kylinConfig = KylinConfig.getInstanceFromEnv();
         cmdExecutor = kylinConfig.getCliCommandExecutor();

http://git-wip-us.apache.org/repos/asf/kylin/blob/b7f03986/tool/src/main/java/org/apache/kylin/tool/DiagnosisInfoCLI.java
----------------------------------------------------------------------
diff --git a/tool/src/main/java/org/apache/kylin/tool/DiagnosisInfoCLI.java b/tool/src/main/java/org/apache/kylin/tool/DiagnosisInfoCLI.java
index 863171d..884a9d4 100644
--- a/tool/src/main/java/org/apache/kylin/tool/DiagnosisInfoCLI.java
+++ b/tool/src/main/java/org/apache/kylin/tool/DiagnosisInfoCLI.java
@@ -24,7 +24,6 @@ import java.io.IOException;
 import org.apache.commons.cli.Option;
 import org.apache.commons.cli.OptionBuilder;
 import org.apache.commons.io.FileUtils;
-import org.apache.kylin.common.KylinConfig;
 import org.apache.kylin.common.util.OptionsHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -96,13 +95,6 @@ public class DiagnosisInfoCLI extends AbstractInfoExtractor {
             clientEnvExtractor.execute(clientArgs);
         }
 
-        // export commit id
-        try {
-            FileUtils.copyFileToDirectory(new File(KylinConfig.getKylinHome(), "commit_SHA1"), exportDir);
-        } catch (Exception e) {
-            logger.warn("Error in export commit id.", e);
-        }
-
         // export logs
         String[] logsArgs = { "-destDir", new File(exportDir, "logs").getAbsolutePath(), "-compress", "false", "-submodule", "true" };
         KylinLogExtractor logExtractor = new KylinLogExtractor();

http://git-wip-us.apache.org/repos/asf/kylin/blob/b7f03986/tool/src/main/java/org/apache/kylin/tool/HBaseUsageExtractor.java
----------------------------------------------------------------------
diff --git a/tool/src/main/java/org/apache/kylin/tool/HBaseUsageExtractor.java b/tool/src/main/java/org/apache/kylin/tool/HBaseUsageExtractor.java
index 0dbe87e..7be03bc 100644
--- a/tool/src/main/java/org/apache/kylin/tool/HBaseUsageExtractor.java
+++ b/tool/src/main/java/org/apache/kylin/tool/HBaseUsageExtractor.java
@@ -65,6 +65,7 @@ public class HBaseUsageExtractor extends AbstractInfoExtractor {
 
     public HBaseUsageExtractor() {
         super();
+        packageType = "hbase";
 
         OptionGroup realizationOrProject = new OptionGroup();
         realizationOrProject.addOption(OPTION_CUBE);


[2/2] kylin git commit: KYLIN-1614 Add more env check to diag tool

Posted by li...@apache.org.
KYLIN-1614 Add more env check to diag tool


Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/0308fa81
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/0308fa81
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/0308fa81

Branch: refs/heads/master
Commit: 0308fa81146fd0b0e100da0e5005a845cba70958
Parents: e47a648
Author: lidongsjtu <li...@apache.org>
Authored: Sat Apr 30 15:52:32 2016 +0800
Committer: lidongsjtu <li...@apache.org>
Committed: Sun May 1 14:14:18 2016 +0800

----------------------------------------------------------------------
 .../org/apache/kylin/common/KylinVersion.java   |  1 +
 .../apache/kylin/rest/init/ClientInfoTask.java  | 13 +++++-----
 .../kylin/tool/AbstractInfoExtractor.java       | 19 ++++++++------
 .../apache/kylin/tool/ClientEnvExtractor.java   | 17 +++++++++---
 .../org/apache/kylin/tool/DiagnosisInfoCLI.java | 27 ++++----------------
 .../apache/kylin/tool/JobDiagnosisInfoCLI.java  |  6 ++---
 .../java/org/apache/kylin/tool/ToolUtil.java    |  2 +-
 7 files changed, 41 insertions(+), 44 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/0308fa81/core-common/src/main/java/org/apache/kylin/common/KylinVersion.java
----------------------------------------------------------------------
diff --git a/core-common/src/main/java/org/apache/kylin/common/KylinVersion.java b/core-common/src/main/java/org/apache/kylin/common/KylinVersion.java
index 03a0720..c015e62 100644
--- a/core-common/src/main/java/org/apache/kylin/common/KylinVersion.java
+++ b/core-common/src/main/java/org/apache/kylin/common/KylinVersion.java
@@ -126,6 +126,7 @@ public class KylinVersion {
     public static String getKylinClientInformation() {
         StringBuilder buf = new StringBuilder();
 
+        buf.append("kylin.home: ").append(new File(KylinConfig.getKylinHome()).getAbsolutePath()).append("\n");
         buf.append("kylin.version:").append(KylinVersion.getCurrentVersion()).append("\n");
         buf.append("commit:").append(getGitCommitInfo()).append("\n");
         buf.append("os.name:").append(System.getProperty("os.name")).append("\n");

http://git-wip-us.apache.org/repos/asf/kylin/blob/0308fa81/server/src/main/java/org/apache/kylin/rest/init/ClientInfoTask.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/kylin/rest/init/ClientInfoTask.java b/server/src/main/java/org/apache/kylin/rest/init/ClientInfoTask.java
index 0fc0e69..301a9df 100644
--- a/server/src/main/java/org/apache/kylin/rest/init/ClientInfoTask.java
+++ b/server/src/main/java/org/apache/kylin/rest/init/ClientInfoTask.java
@@ -18,13 +18,13 @@
 
 package org.apache.kylin.rest.init;
 
+import java.io.File;
+
+import org.apache.kylin.common.KylinConfig;
 import org.apache.kylin.common.KylinVersion;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-/**
- * Created by dongli on 3/16/16.
- */
 public class ClientInfoTask extends InitialTask {
 
     private static final Logger logger = LoggerFactory.getLogger(ClientInfoTask.class);
@@ -37,15 +37,14 @@ public class ClientInfoTask extends InitialTask {
     public static String getClientDetailInformation() {
         StringBuilder buf = new StringBuilder();
 
+        buf.append("kylin.home: ").append(new File(KylinConfig.getKylinHome()).getAbsolutePath()).append("\n");
         buf.append("kylin.version:").append(KylinVersion.getCurrentVersion()).append("\n");
-        buf.append("commit:").append(KylinVersion.getGitCommitInfo());
+        buf.append("commit:").append(KylinVersion.getGitCommitInfo()).append("\n");
         buf.append("os.name:").append(System.getProperty("os.name")).append("\n");
         buf.append("os.arch:").append(System.getProperty("os.arch")).append("\n");
         buf.append("os.version:").append(System.getProperty("os.version")).append("\n");
-        buf.append("java.class.path:").append(System.getProperty("java.class.path")).append("\n");
         buf.append("java.version:").append(System.getProperty("java.version")).append("\n");
-        buf.append("java.vendor:").append(System.getProperty("java.vendor")).append("\n");
-        buf.append("java.library.path:").append(System.getProperty("java.library.path"));
+        buf.append("java.vendor:").append(System.getProperty("java.vendor"));
 
         return buf.toString();
     }

http://git-wip-us.apache.org/repos/asf/kylin/blob/0308fa81/tool/src/main/java/org/apache/kylin/tool/AbstractInfoExtractor.java
----------------------------------------------------------------------
diff --git a/tool/src/main/java/org/apache/kylin/tool/AbstractInfoExtractor.java b/tool/src/main/java/org/apache/kylin/tool/AbstractInfoExtractor.java
index 23a4559..4a5f31e 100644
--- a/tool/src/main/java/org/apache/kylin/tool/AbstractInfoExtractor.java
+++ b/tool/src/main/java/org/apache/kylin/tool/AbstractInfoExtractor.java
@@ -45,7 +45,7 @@ public abstract class AbstractInfoExtractor extends AbstractApplication {
     private static final Option OPTION_COMPRESS = OptionBuilder.withArgName("compress").hasArg().isRequired(false).withDescription("specify whether to compress the output with zip. Default true.").create("compress");
 
     @SuppressWarnings("static-access")
-    private static final Option OPTION_QUIET = OptionBuilder.withArgName("quiet").hasArg().isRequired(false).withDescription("specify whether to print final result").create("quiet");
+    private static final Option OPTION_SUBMODULE = OptionBuilder.withArgName("submodule").hasArg().isRequired(false).withDescription("specify whether this is a submodule of other CLI tool").create("submodule");
 
     private static final String DEFAULT_PACKAGE_TYPE = "base";
 
@@ -58,7 +58,7 @@ public abstract class AbstractInfoExtractor extends AbstractApplication {
         options = new Options();
         options.addOption(OPTION_DEST);
         options.addOption(OPTION_COMPRESS);
-        options.addOption(OPTION_QUIET);
+        options.addOption(OPTION_SUBMODULE);
 
         packageType = DEFAULT_PACKAGE_TYPE;
     }
@@ -71,8 +71,8 @@ public abstract class AbstractInfoExtractor extends AbstractApplication {
     @Override
     protected void execute(OptionsHelper optionsHelper) throws Exception {
         String exportDest = optionsHelper.getOptionValue(options.getOption("destDir"));
-        boolean compress = optionsHelper.hasOption(OPTION_COMPRESS) ? Boolean.valueOf(optionsHelper.getOptionValue(OPTION_COMPRESS)) : true;
-        boolean quiet = optionsHelper.hasOption(OPTION_QUIET) ? Boolean.valueOf(optionsHelper.getOptionValue(OPTION_QUIET)) : false;
+        boolean shouldCompress = optionsHelper.hasOption(OPTION_COMPRESS) ? Boolean.valueOf(optionsHelper.getOptionValue(OPTION_COMPRESS)) : true;
+        boolean isSubmodule = optionsHelper.hasOption(OPTION_SUBMODULE) ? Boolean.valueOf(optionsHelper.getOptionValue(OPTION_SUBMODULE)) : false;
 
         if (StringUtils.isEmpty(exportDest)) {
             throw new RuntimeException("destDir is not set, exit directly without extracting");
@@ -88,11 +88,14 @@ public abstract class AbstractInfoExtractor extends AbstractApplication {
         }
         exportDir = new File(exportDest);
 
-        dumpBasicDiagInfo();
+        if (!isSubmodule) {
+            dumpBasicDiagInfo();
+        }
+
         executeExtract(optionsHelper, exportDir);
 
         // compress to zip package
-        if (compress) {
+        if (shouldCompress) {
             File tempZipFile = File.createTempFile(packageType + "_", ".zip");
             ZipFileUtils.compressZipFile(exportDir.getAbsolutePath(), tempZipFile.getAbsolutePath());
             FileUtils.cleanDirectory(exportDir);
@@ -103,7 +106,7 @@ public abstract class AbstractInfoExtractor extends AbstractApplication {
             exportDir = new File(exportDest);
         }
 
-        if (!quiet) {
+        if (!isSubmodule) {
             StringBuffer output = new StringBuffer();
             output.append("\n========================================");
             output.append("\nDump " + packageType + " package locates at: \n" + exportDir.getAbsolutePath());
@@ -118,7 +121,7 @@ public abstract class AbstractInfoExtractor extends AbstractApplication {
             FileUtils.writeStringToFile(new File(exportDir, "kylin_env"), output);
 
             StringBuilder basicSb = new StringBuilder();
-            basicSb.append(ToolUtil.getHBaseMetaStoreId()).append("\n");
+            basicSb.append("MetaStoreID: ").append(ToolUtil.getHBaseMetaStoreId()).append("\n");
             basicSb.append("PackageType: ").append(packageType.toUpperCase()).append("\n");
             FileUtils.writeStringToFile(new File(exportDir, "info"), basicSb.toString());
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/kylin/blob/0308fa81/tool/src/main/java/org/apache/kylin/tool/ClientEnvExtractor.java
----------------------------------------------------------------------
diff --git a/tool/src/main/java/org/apache/kylin/tool/ClientEnvExtractor.java b/tool/src/main/java/org/apache/kylin/tool/ClientEnvExtractor.java
index b0e79d4..01908be 100644
--- a/tool/src/main/java/org/apache/kylin/tool/ClientEnvExtractor.java
+++ b/tool/src/main/java/org/apache/kylin/tool/ClientEnvExtractor.java
@@ -47,17 +47,28 @@ public class ClientEnvExtractor extends AbstractInfoExtractor {
 
     @Override
     protected void executeExtract(OptionsHelper optionsHelper, File exportDir) throws Exception {
+        // dump os info
         addLocalFile("/sys/kernel/mm/transparent_hugepage/defrag", "linux/transparent_hugepage");
         addLocalFile("/proc/sys/vm/swappiness", "linux/swappiness");
+        addLocalFile("/proc/cpuinfo", "linux/cpuinfo");
         addShellOutput("lsb_release -a", "linux", "lsb_release");
-        addShellOutput("ps aux|grep kylin", "kylin", "processes");
+        addShellOutput("df -h", "linux", "disk_usage");
+        addShellOutput("free -m", "linux", "mem_usage_mb");
+        addShellOutput("top -n 1 | head -n 30", "linux", "top");
+        addShellOutput("ps aux|grep kylin", "linux", "kylin_processes");
+
+        // dump hadoop env
+        addShellOutput("hadoop version", "hadoop", "version");
+        addShellOutput("hbase version", "hbase", "version");
+        addShellOutput("hive --version", "hive", "version");
+        addShellOutput("beeline --version", "hive", "beeline_version");
     }
 
     private void addLocalFile(String src, String destDir) {
         try {
             File srcFile = new File(src);
             File destDirFile = null;
-            if (StringUtils.isEmpty(destDir)) {
+            if (!StringUtils.isEmpty(destDir)) {
                 destDirFile = new File(exportDir, destDir);
                 FileUtils.forceMkdir(destDirFile);
             } else {
@@ -73,7 +84,7 @@ public class ClientEnvExtractor extends AbstractInfoExtractor {
     private void addShellOutput(String cmd, String destDir, String filename) {
         try {
             File destDirFile = null;
-            if (StringUtils.isEmpty(destDir)) {
+            if (!StringUtils.isEmpty(destDir)) {
                 destDirFile = new File(exportDir, destDir);
                 FileUtils.forceMkdir(destDirFile);
             } else {

http://git-wip-us.apache.org/repos/asf/kylin/blob/0308fa81/tool/src/main/java/org/apache/kylin/tool/DiagnosisInfoCLI.java
----------------------------------------------------------------------
diff --git a/tool/src/main/java/org/apache/kylin/tool/DiagnosisInfoCLI.java b/tool/src/main/java/org/apache/kylin/tool/DiagnosisInfoCLI.java
index bd88fe7..863171d 100644
--- a/tool/src/main/java/org/apache/kylin/tool/DiagnosisInfoCLI.java
+++ b/tool/src/main/java/org/apache/kylin/tool/DiagnosisInfoCLI.java
@@ -25,7 +25,6 @@ import org.apache.commons.cli.Option;
 import org.apache.commons.cli.OptionBuilder;
 import org.apache.commons.io.FileUtils;
 import org.apache.kylin.common.KylinConfig;
-import org.apache.kylin.common.KylinVersion;
 import org.apache.kylin.common.util.OptionsHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -45,13 +44,10 @@ public class DiagnosisInfoCLI extends AbstractInfoExtractor {
     @SuppressWarnings("static-access")
     private static final Option OPTION_INCLUDE_CLIENT = OptionBuilder.withArgName("includeClient").hasArg().isRequired(false).withDescription("Specify whether to include client info to extract. Default true.").create("includeClient");
 
-    private KylinConfig kylinConfig;
-
     public DiagnosisInfoCLI() {
         super();
 
-        packageType = "diagnosis";
-        kylinConfig = KylinConfig.getInstanceFromEnv();
+        packageType = "project";
 
         options.addOption(OPTION_PROJECT);
         options.addOption(OPTION_INCLUDE_CONF);
@@ -72,13 +68,13 @@ public class DiagnosisInfoCLI extends AbstractInfoExtractor {
         boolean includeClient = optionsHelper.hasOption(OPTION_INCLUDE_CLIENT) ? Boolean.valueOf(optionsHelper.getOptionValue(OPTION_INCLUDE_CLIENT)) : true;
 
         // export cube metadata
-        String[] cubeMetaArgs = { "-destDir", new File(exportDir, "metadata").getAbsolutePath(), "-project", project, "-compress", "false", "-quiet", "false" };
+        String[] cubeMetaArgs = { "-destDir", new File(exportDir, "metadata").getAbsolutePath(), "-project", project, "-compress", "false", "-submodule", "true" };
         CubeMetaExtractor cubeMetaExtractor = new CubeMetaExtractor();
         cubeMetaExtractor.execute(cubeMetaArgs);
 
         // export HBase
         if (includeHBase) {
-            String[] hbaseArgs = { "-destDir", new File(exportDir, "hbase").getAbsolutePath(), "-project", project, "-compress", "false", "-quiet", "false" };
+            String[] hbaseArgs = { "-destDir", new File(exportDir, "hbase").getAbsolutePath(), "-project", project, "-compress", "false", "-submodule", "true" };
             HBaseUsageExtractor hBaseUsageExtractor = new HBaseUsageExtractor();
             hBaseUsageExtractor.execute(hbaseArgs);
         }
@@ -95,7 +91,7 @@ public class DiagnosisInfoCLI extends AbstractInfoExtractor {
 
         // export client
         if (includeClient) {
-            String[] clientArgs = { "-destDir", new File(exportDir, "client").getAbsolutePath(), "-compress", "false", "-quiet", "false" };
+            String[] clientArgs = { "-destDir", new File(exportDir, "client").getAbsolutePath(), "-compress", "false", "-submodule", "true" };
             ClientEnvExtractor clientEnvExtractor = new ClientEnvExtractor();
             clientEnvExtractor.execute(clientArgs);
         }
@@ -107,21 +103,8 @@ public class DiagnosisInfoCLI extends AbstractInfoExtractor {
             logger.warn("Error in export commit id.", e);
         }
 
-        // export basic info
-        try {
-            File basicDir = new File(exportDir, "basic");
-            FileUtils.forceMkdir(basicDir);
-            String output = KylinVersion.getKylinClientInformation();
-            FileUtils.writeStringToFile(new File(basicDir, "client"), output + "\n");
-            output = ToolUtil.getHBaseMetaStoreId();
-            FileUtils.writeStringToFile(new File(basicDir, "client"), output, true);
-
-        } catch (Exception e) {
-            logger.warn("Error in export process info.", e);
-        }
-
         // export logs
-        String[] logsArgs = { "-destDir", new File(exportDir, "logs").getAbsolutePath(), "-compress", "false", "-quiet", "false" };
+        String[] logsArgs = { "-destDir", new File(exportDir, "logs").getAbsolutePath(), "-compress", "false", "-submodule", "true" };
         KylinLogExtractor logExtractor = new KylinLogExtractor();
         logExtractor.execute(logsArgs);
     }

http://git-wip-us.apache.org/repos/asf/kylin/blob/0308fa81/tool/src/main/java/org/apache/kylin/tool/JobDiagnosisInfoCLI.java
----------------------------------------------------------------------
diff --git a/tool/src/main/java/org/apache/kylin/tool/JobDiagnosisInfoCLI.java b/tool/src/main/java/org/apache/kylin/tool/JobDiagnosisInfoCLI.java
index 85fd539..45e3072 100644
--- a/tool/src/main/java/org/apache/kylin/tool/JobDiagnosisInfoCLI.java
+++ b/tool/src/main/java/org/apache/kylin/tool/JobDiagnosisInfoCLI.java
@@ -101,7 +101,7 @@ public class JobDiagnosisInfoCLI extends AbstractInfoExtractor {
             if (!StringUtils.isEmpty(cubeName)) {
                 File metaDir = new File(exportDir, "cube");
                 FileUtils.forceMkdir(metaDir);
-                String[] cubeMetaArgs = { "-cube", cubeName, "-destDir", new File(metaDir, cubeName).getAbsolutePath(), "-includeJobs", "false", "-compress", "false", "-quiet", "false" };
+                String[] cubeMetaArgs = { "-cube", cubeName, "-destDir", new File(metaDir, cubeName).getAbsolutePath(), "-includeJobs", "false", "-compress", "false", "-submodule", "true" };
 
                 logger.info("Start to extract related cube: " + StringUtils.join(cubeMetaArgs));
                 CubeMetaExtractor cubeMetaExtractor = new CubeMetaExtractor();
@@ -120,13 +120,13 @@ public class JobDiagnosisInfoCLI extends AbstractInfoExtractor {
         }
 
         if (includeClient) {
-            String[] clientArgs = { "-destDir", new File(exportDir, "client").getAbsolutePath(), "-compress", "false", "-quiet", "false" };
+            String[] clientArgs = { "-destDir", new File(exportDir, "client").getAbsolutePath(), "-compress", "false", "-submodule", "true" };
             ClientEnvExtractor clientEnvExtractor = new ClientEnvExtractor();
             clientEnvExtractor.execute(clientArgs);
         }
 
         // export kylin logs
-        String[] logsArgs = { "-destDir", new File(exportDir, "logs").getAbsolutePath(), "-compress", "false", "-quiet", "false" };
+        String[] logsArgs = { "-destDir", new File(exportDir, "logs").getAbsolutePath(), "-compress", "false", "-submodule", "true" };
         KylinLogExtractor logExtractor = new KylinLogExtractor();
         logExtractor.execute(logsArgs);
     }

http://git-wip-us.apache.org/repos/asf/kylin/blob/0308fa81/tool/src/main/java/org/apache/kylin/tool/ToolUtil.java
----------------------------------------------------------------------
diff --git a/tool/src/main/java/org/apache/kylin/tool/ToolUtil.java b/tool/src/main/java/org/apache/kylin/tool/ToolUtil.java
index 24a7a37..aa8810c 100644
--- a/tool/src/main/java/org/apache/kylin/tool/ToolUtil.java
+++ b/tool/src/main/java/org/apache/kylin/tool/ToolUtil.java
@@ -49,7 +49,7 @@ public class ToolUtil {
         try (final HBaseAdmin hbaseAdmin = new HBaseAdmin(HBaseConfiguration.create(HadoopUtil.getCurrentConfiguration()))) {
             final String metaStoreName = KylinConfig.getInstanceFromEnv().getMetadataUrlPrefix();
             final HTableDescriptor desc = hbaseAdmin.getTableDescriptor(TableName.valueOf(metaStoreName));
-            return "MetaStore UUID: " + desc.getValue(HBaseConnection.HTABLE_UUID_TAG);
+            return desc.getValue(HBaseConnection.HTABLE_UUID_TAG);
         }
     }