[08/50] [abbrv] hadoop git commit: YARN-4905. Improved "yarn logs" command-line to optionally show log metadata also. Contributed by Xuan Gong.

2016-05-09 Thread wangda
YARN-4905. Improved "yarn logs" command-line to optionally show log metadata 
also. Contributed by Xuan Gong.


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

Branch: refs/heads/YARN-3368
Commit: 9e37fe3b7a3b5f0a193d228bb5e065f41acd2835
Parents: 7bd418e
Author: Vinod Kumar Vavilapalli 
Authored: Wed May 4 14:16:03 2016 -0700
Committer: Vinod Kumar Vavilapalli 
Committed: Wed May 4 14:16:03 2016 -0700

--
 .../apache/hadoop/yarn/client/cli/LogsCLI.java  | 507 +++
 .../hadoop/yarn/client/cli/TestLogsCLI.java | 190 ++-
 .../logaggregation/AggregatedLogFormat.java |  20 +
 .../yarn/logaggregation/LogCLIHelpers.java  | 192 +--
 4 files changed, 654 insertions(+), 255 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hadoop/blob/9e37fe3b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java
--
diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java
index 2c4fee6..487b694 100644
--- 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java
@@ -45,6 +45,7 @@ import org.apache.hadoop.security.UserGroupInformation;
 import org.apache.hadoop.util.Tool;
 import org.apache.hadoop.yarn.api.records.ApplicationId;
 import org.apache.hadoop.yarn.api.records.ApplicationReport;
+import org.apache.hadoop.yarn.api.records.ContainerId;
 import org.apache.hadoop.yarn.api.records.ContainerReport;
 import org.apache.hadoop.yarn.api.records.YarnApplicationState;
 import org.apache.hadoop.yarn.client.api.YarnClient;
@@ -78,59 +79,16 @@ public class LogsCLI extends Configured implements Tool {
   private static final String APP_OWNER_OPTION = "appOwner";
   private static final String AM_CONTAINER_OPTION = "am";
   private static final String CONTAINER_LOG_FILES = "logFiles";
+  private static final String SHOW_META_INFO = "show_meta_info";
+  private static final String LIST_NODES_OPTION = "list_nodes";
   public static final String HELP_CMD = "help";
 
   @Override
   public int run(String[] args) throws Exception {
 
-Options opts = new Options();
-opts.addOption(HELP_CMD, false, "Displays help for all commands.");
-Option appIdOpt =
-new Option(APPLICATION_ID_OPTION, true, "ApplicationId (required)");
-appIdOpt.setRequired(true);
-opts.addOption(appIdOpt);
-opts.addOption(CONTAINER_ID_OPTION, true, "ContainerId. "
-+ "By default, it will only print syslog if the application is runing."
-+ " Work with -logFiles to get other logs.");
-opts.addOption(NODE_ADDRESS_OPTION, true, "NodeAddress in the format "
-  + "nodename:port");
-opts.addOption(APP_OWNER_OPTION, true,
-  "AppOwner (assumed to be current user if not specified)");
-Option amOption = new Option(AM_CONTAINER_OPTION, true, 
-  "Prints the AM Container logs for this application. "
-  + "Specify comma-separated value to get logs for related AM Container. "
-  + "For example, If we specify -am 1,2, we will get the logs for "
-  + "the first AM Container as well as the second AM Container. "
-  + "To get logs for all AM Containers, use -am ALL. "
-  + "To get logs for the latest AM Container, use -am -1. "
-  + "By default, it will only print out syslog. Work with -logFiles "
-  + "to get other logs");
-amOption.setValueSeparator(',');
-amOption.setArgs(Option.UNLIMITED_VALUES);
-amOption.setArgName("AM Containers");
-opts.addOption(amOption);
-Option logFileOpt = new Option(CONTAINER_LOG_FILES, true,
-  "Work with -am/-containerId and specify comma-separated value "
-+ "to get specified container log files. Use \"ALL\" to fetch all the "
-+ "log files for the container.");
-logFileOpt.setValueSeparator(',');
-logFileOpt.setArgs(Option.UNLIMITED_VALUES);
-logFileOpt.setArgName("Log File Name");
-opts.addOption(logFileOpt);
-
-opts.getOption(APPLICATION_ID_OPTION).setArgName("Application ID");
-opts.getOption(CONTAINER_ID_OPTION).setArgName("Container ID");
-opts.getOption(NODE_ADDRESS_OPTION).setArgName("Node Address");
-opts.getOption(APP_OWNER_OPTION).setArgName("Application Owner");
-

[23/50] [abbrv] hadoop git commit: YARN-4905. Improved "yarn logs" command-line to optionally show log metadata also. Contributed by Xuan Gong.

2016-05-09 Thread aengineer
YARN-4905. Improved "yarn logs" command-line to optionally show log metadata 
also. Contributed by Xuan Gong.


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

Branch: refs/heads/HDFS-1312
Commit: 9e37fe3b7a3b5f0a193d228bb5e065f41acd2835
Parents: 7bd418e
Author: Vinod Kumar Vavilapalli 
Authored: Wed May 4 14:16:03 2016 -0700
Committer: Vinod Kumar Vavilapalli 
Committed: Wed May 4 14:16:03 2016 -0700

--
 .../apache/hadoop/yarn/client/cli/LogsCLI.java  | 507 +++
 .../hadoop/yarn/client/cli/TestLogsCLI.java | 190 ++-
 .../logaggregation/AggregatedLogFormat.java |  20 +
 .../yarn/logaggregation/LogCLIHelpers.java  | 192 +--
 4 files changed, 654 insertions(+), 255 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hadoop/blob/9e37fe3b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java
--
diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java
index 2c4fee6..487b694 100644
--- 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java
@@ -45,6 +45,7 @@ import org.apache.hadoop.security.UserGroupInformation;
 import org.apache.hadoop.util.Tool;
 import org.apache.hadoop.yarn.api.records.ApplicationId;
 import org.apache.hadoop.yarn.api.records.ApplicationReport;
+import org.apache.hadoop.yarn.api.records.ContainerId;
 import org.apache.hadoop.yarn.api.records.ContainerReport;
 import org.apache.hadoop.yarn.api.records.YarnApplicationState;
 import org.apache.hadoop.yarn.client.api.YarnClient;
@@ -78,59 +79,16 @@ public class LogsCLI extends Configured implements Tool {
   private static final String APP_OWNER_OPTION = "appOwner";
   private static final String AM_CONTAINER_OPTION = "am";
   private static final String CONTAINER_LOG_FILES = "logFiles";
+  private static final String SHOW_META_INFO = "show_meta_info";
+  private static final String LIST_NODES_OPTION = "list_nodes";
   public static final String HELP_CMD = "help";
 
   @Override
   public int run(String[] args) throws Exception {
 
-Options opts = new Options();
-opts.addOption(HELP_CMD, false, "Displays help for all commands.");
-Option appIdOpt =
-new Option(APPLICATION_ID_OPTION, true, "ApplicationId (required)");
-appIdOpt.setRequired(true);
-opts.addOption(appIdOpt);
-opts.addOption(CONTAINER_ID_OPTION, true, "ContainerId. "
-+ "By default, it will only print syslog if the application is runing."
-+ " Work with -logFiles to get other logs.");
-opts.addOption(NODE_ADDRESS_OPTION, true, "NodeAddress in the format "
-  + "nodename:port");
-opts.addOption(APP_OWNER_OPTION, true,
-  "AppOwner (assumed to be current user if not specified)");
-Option amOption = new Option(AM_CONTAINER_OPTION, true, 
-  "Prints the AM Container logs for this application. "
-  + "Specify comma-separated value to get logs for related AM Container. "
-  + "For example, If we specify -am 1,2, we will get the logs for "
-  + "the first AM Container as well as the second AM Container. "
-  + "To get logs for all AM Containers, use -am ALL. "
-  + "To get logs for the latest AM Container, use -am -1. "
-  + "By default, it will only print out syslog. Work with -logFiles "
-  + "to get other logs");
-amOption.setValueSeparator(',');
-amOption.setArgs(Option.UNLIMITED_VALUES);
-amOption.setArgName("AM Containers");
-opts.addOption(amOption);
-Option logFileOpt = new Option(CONTAINER_LOG_FILES, true,
-  "Work with -am/-containerId and specify comma-separated value "
-+ "to get specified container log files. Use \"ALL\" to fetch all the "
-+ "log files for the container.");
-logFileOpt.setValueSeparator(',');
-logFileOpt.setArgs(Option.UNLIMITED_VALUES);
-logFileOpt.setArgName("Log File Name");
-opts.addOption(logFileOpt);
-
-opts.getOption(APPLICATION_ID_OPTION).setArgName("Application ID");
-opts.getOption(CONTAINER_ID_OPTION).setArgName("Container ID");
-opts.getOption(NODE_ADDRESS_OPTION).setArgName("Node Address");
-opts.getOption(APP_OWNER_OPTION).setArgName("Application Owner");
-

[05/18] hadoop git commit: YARN-4905. Improved "yarn logs" command-line to optionally show log metadata also. Contributed by Xuan Gong.

2016-05-04 Thread aw
YARN-4905. Improved "yarn logs" command-line to optionally show log metadata 
also. Contributed by Xuan Gong.


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

Branch: refs/heads/HADOOP-12930
Commit: 9e37fe3b7a3b5f0a193d228bb5e065f41acd2835
Parents: 7bd418e
Author: Vinod Kumar Vavilapalli 
Authored: Wed May 4 14:16:03 2016 -0700
Committer: Vinod Kumar Vavilapalli 
Committed: Wed May 4 14:16:03 2016 -0700

--
 .../apache/hadoop/yarn/client/cli/LogsCLI.java  | 507 +++
 .../hadoop/yarn/client/cli/TestLogsCLI.java | 190 ++-
 .../logaggregation/AggregatedLogFormat.java |  20 +
 .../yarn/logaggregation/LogCLIHelpers.java  | 192 +--
 4 files changed, 654 insertions(+), 255 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hadoop/blob/9e37fe3b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java
--
diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java
index 2c4fee6..487b694 100644
--- 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java
@@ -45,6 +45,7 @@ import org.apache.hadoop.security.UserGroupInformation;
 import org.apache.hadoop.util.Tool;
 import org.apache.hadoop.yarn.api.records.ApplicationId;
 import org.apache.hadoop.yarn.api.records.ApplicationReport;
+import org.apache.hadoop.yarn.api.records.ContainerId;
 import org.apache.hadoop.yarn.api.records.ContainerReport;
 import org.apache.hadoop.yarn.api.records.YarnApplicationState;
 import org.apache.hadoop.yarn.client.api.YarnClient;
@@ -78,59 +79,16 @@ public class LogsCLI extends Configured implements Tool {
   private static final String APP_OWNER_OPTION = "appOwner";
   private static final String AM_CONTAINER_OPTION = "am";
   private static final String CONTAINER_LOG_FILES = "logFiles";
+  private static final String SHOW_META_INFO = "show_meta_info";
+  private static final String LIST_NODES_OPTION = "list_nodes";
   public static final String HELP_CMD = "help";
 
   @Override
   public int run(String[] args) throws Exception {
 
-Options opts = new Options();
-opts.addOption(HELP_CMD, false, "Displays help for all commands.");
-Option appIdOpt =
-new Option(APPLICATION_ID_OPTION, true, "ApplicationId (required)");
-appIdOpt.setRequired(true);
-opts.addOption(appIdOpt);
-opts.addOption(CONTAINER_ID_OPTION, true, "ContainerId. "
-+ "By default, it will only print syslog if the application is runing."
-+ " Work with -logFiles to get other logs.");
-opts.addOption(NODE_ADDRESS_OPTION, true, "NodeAddress in the format "
-  + "nodename:port");
-opts.addOption(APP_OWNER_OPTION, true,
-  "AppOwner (assumed to be current user if not specified)");
-Option amOption = new Option(AM_CONTAINER_OPTION, true, 
-  "Prints the AM Container logs for this application. "
-  + "Specify comma-separated value to get logs for related AM Container. "
-  + "For example, If we specify -am 1,2, we will get the logs for "
-  + "the first AM Container as well as the second AM Container. "
-  + "To get logs for all AM Containers, use -am ALL. "
-  + "To get logs for the latest AM Container, use -am -1. "
-  + "By default, it will only print out syslog. Work with -logFiles "
-  + "to get other logs");
-amOption.setValueSeparator(',');
-amOption.setArgs(Option.UNLIMITED_VALUES);
-amOption.setArgName("AM Containers");
-opts.addOption(amOption);
-Option logFileOpt = new Option(CONTAINER_LOG_FILES, true,
-  "Work with -am/-containerId and specify comma-separated value "
-+ "to get specified container log files. Use \"ALL\" to fetch all the "
-+ "log files for the container.");
-logFileOpt.setValueSeparator(',');
-logFileOpt.setArgs(Option.UNLIMITED_VALUES);
-logFileOpt.setArgName("Log File Name");
-opts.addOption(logFileOpt);
-
-opts.getOption(APPLICATION_ID_OPTION).setArgName("Application ID");
-opts.getOption(CONTAINER_ID_OPTION).setArgName("Container ID");
-opts.getOption(NODE_ADDRESS_OPTION).setArgName("Node Address");
-opts.getOption(APP_OWNER_OPTION).setArgName("Application Owner");
-

hadoop git commit: YARN-4905. Improved "yarn logs" command-line to optionally show log metadata also. Contributed by Xuan Gong.

2016-05-04 Thread vinodkv
Repository: hadoop
Updated Branches:
  refs/heads/branch-2 585299146 -> 8262ef831


YARN-4905. Improved "yarn logs" command-line to optionally show log metadata 
also. Contributed by Xuan Gong.

(cherry picked from commit 9e37fe3b7a3b5f0a193d228bb5e065f41acd2835)


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

Branch: refs/heads/branch-2
Commit: 8262ef8318bba41dff0451abe6383df12ddd82b2
Parents: 5852991
Author: Vinod Kumar Vavilapalli 
Authored: Wed May 4 14:16:03 2016 -0700
Committer: Vinod Kumar Vavilapalli 
Committed: Wed May 4 14:17:09 2016 -0700

--
 .../apache/hadoop/yarn/client/cli/LogsCLI.java  | 507 +++
 .../hadoop/yarn/client/cli/TestLogsCLI.java | 190 ++-
 .../logaggregation/AggregatedLogFormat.java |  20 +
 .../yarn/logaggregation/LogCLIHelpers.java  | 192 +--
 4 files changed, 654 insertions(+), 255 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hadoop/blob/8262ef83/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java
--
diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java
index 2c4fee6..487b694 100644
--- 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java
@@ -45,6 +45,7 @@ import org.apache.hadoop.security.UserGroupInformation;
 import org.apache.hadoop.util.Tool;
 import org.apache.hadoop.yarn.api.records.ApplicationId;
 import org.apache.hadoop.yarn.api.records.ApplicationReport;
+import org.apache.hadoop.yarn.api.records.ContainerId;
 import org.apache.hadoop.yarn.api.records.ContainerReport;
 import org.apache.hadoop.yarn.api.records.YarnApplicationState;
 import org.apache.hadoop.yarn.client.api.YarnClient;
@@ -78,59 +79,16 @@ public class LogsCLI extends Configured implements Tool {
   private static final String APP_OWNER_OPTION = "appOwner";
   private static final String AM_CONTAINER_OPTION = "am";
   private static final String CONTAINER_LOG_FILES = "logFiles";
+  private static final String SHOW_META_INFO = "show_meta_info";
+  private static final String LIST_NODES_OPTION = "list_nodes";
   public static final String HELP_CMD = "help";
 
   @Override
   public int run(String[] args) throws Exception {
 
-Options opts = new Options();
-opts.addOption(HELP_CMD, false, "Displays help for all commands.");
-Option appIdOpt =
-new Option(APPLICATION_ID_OPTION, true, "ApplicationId (required)");
-appIdOpt.setRequired(true);
-opts.addOption(appIdOpt);
-opts.addOption(CONTAINER_ID_OPTION, true, "ContainerId. "
-+ "By default, it will only print syslog if the application is runing."
-+ " Work with -logFiles to get other logs.");
-opts.addOption(NODE_ADDRESS_OPTION, true, "NodeAddress in the format "
-  + "nodename:port");
-opts.addOption(APP_OWNER_OPTION, true,
-  "AppOwner (assumed to be current user if not specified)");
-Option amOption = new Option(AM_CONTAINER_OPTION, true, 
-  "Prints the AM Container logs for this application. "
-  + "Specify comma-separated value to get logs for related AM Container. "
-  + "For example, If we specify -am 1,2, we will get the logs for "
-  + "the first AM Container as well as the second AM Container. "
-  + "To get logs for all AM Containers, use -am ALL. "
-  + "To get logs for the latest AM Container, use -am -1. "
-  + "By default, it will only print out syslog. Work with -logFiles "
-  + "to get other logs");
-amOption.setValueSeparator(',');
-amOption.setArgs(Option.UNLIMITED_VALUES);
-amOption.setArgName("AM Containers");
-opts.addOption(amOption);
-Option logFileOpt = new Option(CONTAINER_LOG_FILES, true,
-  "Work with -am/-containerId and specify comma-separated value "
-+ "to get specified container log files. Use \"ALL\" to fetch all the "
-+ "log files for the container.");
-logFileOpt.setValueSeparator(',');
-logFileOpt.setArgs(Option.UNLIMITED_VALUES);
-logFileOpt.setArgName("Log File Name");
-opts.addOption(logFileOpt);
-
-opts.getOption(APPLICATION_ID_OPTION).setArgName("Application ID");
-opts.getOption(CONTAINER_ID_OPTION).setArgName("Container ID");
-  

hadoop git commit: YARN-4905. Improved "yarn logs" command-line to optionally show log metadata also. Contributed by Xuan Gong.

2016-05-04 Thread vinodkv
Repository: hadoop
Updated Branches:
  refs/heads/trunk 7bd418e48 -> 9e37fe3b7


YARN-4905. Improved "yarn logs" command-line to optionally show log metadata 
also. Contributed by Xuan Gong.


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

Branch: refs/heads/trunk
Commit: 9e37fe3b7a3b5f0a193d228bb5e065f41acd2835
Parents: 7bd418e
Author: Vinod Kumar Vavilapalli 
Authored: Wed May 4 14:16:03 2016 -0700
Committer: Vinod Kumar Vavilapalli 
Committed: Wed May 4 14:16:03 2016 -0700

--
 .../apache/hadoop/yarn/client/cli/LogsCLI.java  | 507 +++
 .../hadoop/yarn/client/cli/TestLogsCLI.java | 190 ++-
 .../logaggregation/AggregatedLogFormat.java |  20 +
 .../yarn/logaggregation/LogCLIHelpers.java  | 192 +--
 4 files changed, 654 insertions(+), 255 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hadoop/blob/9e37fe3b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java
--
diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java
index 2c4fee6..487b694 100644
--- 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java
@@ -45,6 +45,7 @@ import org.apache.hadoop.security.UserGroupInformation;
 import org.apache.hadoop.util.Tool;
 import org.apache.hadoop.yarn.api.records.ApplicationId;
 import org.apache.hadoop.yarn.api.records.ApplicationReport;
+import org.apache.hadoop.yarn.api.records.ContainerId;
 import org.apache.hadoop.yarn.api.records.ContainerReport;
 import org.apache.hadoop.yarn.api.records.YarnApplicationState;
 import org.apache.hadoop.yarn.client.api.YarnClient;
@@ -78,59 +79,16 @@ public class LogsCLI extends Configured implements Tool {
   private static final String APP_OWNER_OPTION = "appOwner";
   private static final String AM_CONTAINER_OPTION = "am";
   private static final String CONTAINER_LOG_FILES = "logFiles";
+  private static final String SHOW_META_INFO = "show_meta_info";
+  private static final String LIST_NODES_OPTION = "list_nodes";
   public static final String HELP_CMD = "help";
 
   @Override
   public int run(String[] args) throws Exception {
 
-Options opts = new Options();
-opts.addOption(HELP_CMD, false, "Displays help for all commands.");
-Option appIdOpt =
-new Option(APPLICATION_ID_OPTION, true, "ApplicationId (required)");
-appIdOpt.setRequired(true);
-opts.addOption(appIdOpt);
-opts.addOption(CONTAINER_ID_OPTION, true, "ContainerId. "
-+ "By default, it will only print syslog if the application is runing."
-+ " Work with -logFiles to get other logs.");
-opts.addOption(NODE_ADDRESS_OPTION, true, "NodeAddress in the format "
-  + "nodename:port");
-opts.addOption(APP_OWNER_OPTION, true,
-  "AppOwner (assumed to be current user if not specified)");
-Option amOption = new Option(AM_CONTAINER_OPTION, true, 
-  "Prints the AM Container logs for this application. "
-  + "Specify comma-separated value to get logs for related AM Container. "
-  + "For example, If we specify -am 1,2, we will get the logs for "
-  + "the first AM Container as well as the second AM Container. "
-  + "To get logs for all AM Containers, use -am ALL. "
-  + "To get logs for the latest AM Container, use -am -1. "
-  + "By default, it will only print out syslog. Work with -logFiles "
-  + "to get other logs");
-amOption.setValueSeparator(',');
-amOption.setArgs(Option.UNLIMITED_VALUES);
-amOption.setArgName("AM Containers");
-opts.addOption(amOption);
-Option logFileOpt = new Option(CONTAINER_LOG_FILES, true,
-  "Work with -am/-containerId and specify comma-separated value "
-+ "to get specified container log files. Use \"ALL\" to fetch all the "
-+ "log files for the container.");
-logFileOpt.setValueSeparator(',');
-logFileOpt.setArgs(Option.UNLIMITED_VALUES);
-logFileOpt.setArgName("Log File Name");
-opts.addOption(logFileOpt);
-
-opts.getOption(APPLICATION_ID_OPTION).setArgName("Application ID");
-opts.getOption(CONTAINER_ID_OPTION).setArgName("Container ID");
-opts.getOption(NODE_ADDRESS_OPTION).setArgName("Node Address");
-