You are viewing a plain text version of this content. The canonical link for it is here.
Posted to yarn-issues@hadoop.apache.org by "rainy Yu (JIRA)" <ji...@apache.org> on 2013/03/27 05:49:16 UTC

[jira] [Commented] (YARN-157) The option shell_command and shell_script have conflict

    [ https://issues.apache.org/jira/browse/YARN-157?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13614922#comment-13614922 ] 

rainy Yu commented on YARN-157:
-------------------------------

I can't commit Attachments. My patch is:
Index: src/main/java/org/apache/hadoop/yarn/applications/distributedshell/Client.java
===================================================================
--- src/main/java/org/apache/hadoop/yarn/applications/distributedshell/Client.java      (revision 90765)
+++ src/main/java/org/apache/hadoop/yarn/applications/distributedshell/Client.java      (working copy)
@@ -140,8 +140,8 @@
   // Main class to invoke application master
   private String appMasterMainClass = "";

-  // Shell command to be executed 
-  private String shellCommand = ""; 
+  // Shell command to be executed. the Linux shell command '/bin/sh' is default
+  private String shellCommand = "/bin/sh"; 
   // Location of shell script
   private String shellScriptPath = "";
   // Args to be passed to the shell command
@@ -276,10 +276,11 @@
     appMasterMainClass = cliParser.getOptionValue("class",
         "org.apache.hadoop.yarn.applications.distributedshell.ApplicationMaster");

-    if (!cliParser.hasOption("shell_command")) {
-      throw new IllegalArgumentException("No shell command specified to be executed by application master");
+    if (cliParser.hasOption("shell_command")) {
+      //throw new IllegalArgumentException("No shell command specified to be executed by application master");
+       shellCommand = cliParser.getOptionValue("shell_command");
     }
-    shellCommand = cliParser.getOptionValue("shell_command");
+    //shellCommand = cliParser.getOptionValue("shell_command");

     if (cliParser.hasOption("shell_script")) {
       shellScriptPath = cliParser.getOptionValue("shell_script");

                
> The option shell_command and shell_script have conflict
> -------------------------------------------------------
>
>                 Key: YARN-157
>                 URL: https://issues.apache.org/jira/browse/YARN-157
>             Project: Hadoop YARN
>          Issue Type: Bug
>          Components: applications/distributed-shell
>    Affects Versions: 2.0.1-alpha
>            Reporter: Li Ming
>              Labels: patch
>
> The DistributedShell has an option shell_script to let user specify a shell script which will be executed in containers. But the issue is that the shell_command option is a must, so if both options are set, then every container executor will end with exitCode=1. This is because DistributedShell executes the shell_command and shell_script together. For example, if shell_command is 'date' then the final command to be executed in container is "date `ExecShellScript.sh`", so the date command will treat the result of ExecShellScript.sh as its parameter, then there will be an error. 
> To solve this, the DistributedShell should not use the value of shell_command option when the shell_script option is set, and the shell_command option also should not be mandatory. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira