> On March 3, 2014, 7:30 a.m., Rohini Palaniswamy wrote:
> > We need to add the killChildJobs in Java, Shell and Distcp as well. Many 
> > people launch hbase jobs from java action and instead of each user adding 
> > killChildJobs doing it in JavaActionExecutor should be good. Currently the 
> > configuration is not passed properly to distcp action. For killing child 
> > jobs in distcp to work, we need to fix that or pass the configuration as 
> > arg (i.e -Dmapreduce.job.tags=xxx) so that child jobs are launched with 
> > that tag. I think we can pass it as arg for now.
> 
> Robert Kanter wrote:
>     The reason I didn't add the killChildJobs to the Distcp action is that we 
> don't have a "DistcpMain" to put it in.  I didn't want to put the 
> killChildJobs in the calling class LauncherMapper because (a) we handle this 
> differently for the MR action and (b) someone writing a custom action (or us 
> in a future action) may also want to handle this differently.  I guess I 
> could write a wrapper "DistcpMain" to call killChildJobs...
>     
>     For the Java and Shell actions, they don't necessarily launch any child 
> jobs.  And in general, we don't implement some of the "Oozie magic" stuff for 
> the Java and Shell actions, leaving it up to the user instead (for example, 
> propagating the action's <configuration> or the delegation token).  The Java 
> action also has the same problem as the Distcp action, in that there's no 
> "JavaMain".  What if I added documentation on how to call killChildJobs so 
> the user can do this in their Main?
> 
> Rohini Palaniswamy wrote:
>     Many users launch child jobs in their java actions (especially with 
> hbase). Would prefer as much less work for user as possible. If you are 
> writing a DistcpMain, you can just write a JavaMain that calls killChildJobs 
> and make DistcpMain just extend that. That way it will just work without 
> users having to bother about it and writing different code for different 
> versions of hadoop.
> 
> Robert Kanter wrote:
>     I can add a wrapper for Java and Distcp that does the killing.  Though 
> for the Java action, it will still be up to the user to propagate the 
> actionConf prepared by Oozie, or at least just set the tag property.
> 
> Rohini Palaniswamy wrote:
>     Sounds good and thanks. Most of them usually propagate the actionConf and 
> would benefit from this.
> 
> Robert Kanter wrote:
>     Getting this to work with DistCp is trickier than I thought.  I tried 
> passing the tags property as a -D argument, but that didn't work (in fact, it 
> caused an error).  Looking at DistCp's code, we could try to invoke it 
> programmatically from a "DistCpMain" instead of JavaMain; this would allow us 
> to pass it a Configuration.  However, DistCp v1 (Hadoop 1) and v2 (Hadoop 
> 0.23, Hadoop 2+) don't have a common constructor (v2's constructor takes an 
> additional argument), so the "DistCpMain" would have to use Reflection and 
> check which constructor is available.  MAPREDUCE-5081 did backport v2 to 
> Hadoop 1, but its only in Hadoop 1.2.0 and we're using 1.1.1
>     
>     So we have a few options:
>     (1) Don't support the tags with DistCp
>     (2) Use a "DistCpMain"
>        (2a) Use reflection to call the appropriate constructor and run it 
> programmatically
>        (2b) Update to Hadoop 1.2.x and use DistCp v2 for each version of 
> Hadoop
>     
>     I think we should do (1) for now so we can get the tags stuff in and 
> create a follow-up JIRA to do (2b), which will require a lot of additional 
> testing.
>     
>     Thoughts?
> 
> Rohini Palaniswamy wrote:
>     Option 3:
>      <arg>-Dmapred.job.queue.name=${queueName}</arg> is how queue information 
> is currently passed to Distcp from the distcp action. 
> LauncherMapperHelper.setupMainArguments and LauncherMapper.getMainArguments 
> handle the main method arguments. We need to introduce it somewhere there for 
> Distcp. But it is hacky and don't like it much. Just pointing out as an 
> option.
>     
>      Your option 2 is cleaner and like it better. We definitely need to fix 
> DistcpMain to call the constructor instead of the main() method to pass the 
> JobConf. Users have been passing even the queue information as above because 
> the distcp job does not get the action configuration. We had this reported as 
> an issue, but have always gone with the <arg> workaround. So option 2 will 
> fix more issues. We can definitely do (2a). (2b) of course can be a different 
> jira.
> 
> Rohini Palaniswamy wrote:
>     Actually with your current patch you can easily do Option 3 (passing 
> -Dmapreduce.job.tags=xxx as main args) with DistcpMain as you would be 
> invoking the Distcp main class from there. Was that what you tried and did 
> not work?
> 
> Robert Kanter wrote:
>     I did try option 3, using LauncherMapperHelper.setupMainArguments.  It 
> gave an error about not understanding the -D argument.  I think that only 
> works from the hadoop CLI, which parses out the -D args.  
>     
>     I can try 2a, but I think this will be very brittle.  The main() in each 
> DistCp is different (e.g. v2 has a shutdown hook it configures).  So while I 
> can try to duplicate each main() in the reflection, it can easily break if 
> DistCp changes or if someone is using a different version of DistCp.  I think 
> we should wait and do 1 and do 2b later.

How does <arg>-Dmapred.job.queue.name=${queueName}</arg> get passed to distcp 
then?


- Rohini


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/18653/#review35947
-----------------------------------------------------------


On March 4, 2014, 9:48 p.m., Robert Kanter wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/18653/
> -----------------------------------------------------------
> 
> (Updated March 4, 2014, 9:48 p.m.)
> 
> 
> Review request for oozie.
> 
> 
> Bugs: OOZIE-1722
>     https://issues.apache.org/jira/browse/OOZIE-1722
> 
> 
> Repository: oozie-git
> 
> 
> Description
> -------
> 
> See https://issues.apache.org/jira/browse/OOZIE-1722
> 
> 
> Diffs
> -----
> 
>   core/src/main/java/org/apache/oozie/action/hadoop/DistcpActionExecutor.java 
> fcf69e7 
>   core/src/main/java/org/apache/oozie/action/hadoop/JavaActionExecutor.java 
> 68d77a8 
>   core/src/main/java/org/apache/oozie/action/hadoop/LauncherMapperHelper.java 
> 07de214 
>   
> core/src/test/java/org/apache/oozie/action/hadoop/TestJavaActionExecutor.java 
> 7841076 
>   core/src/test/java/org/apache/oozie/action/hadoop/TestLauncher.java b55b9d7 
>   core/src/test/java/org/apache/oozie/service/TestShareLibService.java 
> e7d7a26 
>   hadooplibs/hadoop-utils-0.23/pom.xml PRE-CREATION 
>   
> hadooplibs/hadoop-utils-0.23/src/main/java/org/apache/oozie/action/hadoop/LauncherMainHadoopUtils.java
>  PRE-CREATION 
>   hadooplibs/hadoop-utils-1/pom.xml PRE-CREATION 
>   
> hadooplibs/hadoop-utils-1/src/main/java/org/apache/oozie/action/hadoop/LauncherMainHadoopUtils.java
>  PRE-CREATION 
>   hadooplibs/hadoop-utils-2/pom.xml PRE-CREATION 
>   
> hadooplibs/hadoop-utils-2/src/main/java/org/apache/oozie/action/hadoop/LauncherMainHadoopUtils.java
>  PRE-CREATION 
>   hadooplibs/hadoop-utils-3/pom.xml PRE-CREATION 
>   
> hadooplibs/hadoop-utils-3/src/main/java/org/apache/oozie/action/hadoop/LauncherMainHadoopUtils.java
>  PRE-CREATION 
>   hadooplibs/pom.xml 35875c8 
>   pom.xml 1223ec2 
>   
> sharelib/distcp/src/test/java/org/apache/oozie/action/hadoop/TestDistCpActionExecutor.java
>  25b1a23 
>   sharelib/hive/pom.xml e355d97 
>   sharelib/hive/src/main/java/org/apache/oozie/action/hadoop/HiveMain.java 
> 8fa5ec8 
>   sharelib/oozie/pom.xml c70582d 
>   sharelib/oozie/src/main/java/org/apache/oozie/action/hadoop/JavaMain.java 
> PRE-CREATION 
>   
> sharelib/oozie/src/main/java/org/apache/oozie/action/hadoop/LauncherMapper.java
>  b5fa4a1 
>   
> sharelib/oozie/src/main/java/org/apache/oozie/action/hadoop/MapReduceMain.java
>  6230e64 
>   sharelib/pig/pom.xml a2bbeaf 
>   sharelib/pig/src/main/java/org/apache/oozie/action/hadoop/PigMain.java 
> 9c1e659 
>   sharelib/sqoop/pom.xml a962565 
>   sharelib/sqoop/src/main/java/org/apache/oozie/action/hadoop/SqoopMain.java 
> e45c8b2 
>   
> sharelib/streaming/src/test/java/org/apache/oozie/action/hadoop/TestJavaActionExecutor.java
>  PRE-CREATION 
> 
> Diff: https://reviews.apache.org/r/18653/diff/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Robert Kanter
> 
>

Reply via email to