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

Roman Shaposhnik commented on MAPREDUCE-3693:
---------------------------------------------

Now that I've looked at the actual implementation (Arun, thanks a lot for 
pointing out where it is!) the only concern that I have left is that it is 
*extremely* difficult to realize that mapreduce.admin.user.env is what actually 
adds 
LD_LIBRARY_PATH=$HADOOP_COMMON_HOME/lib/native to the YarnChild's environment. 

In other words, if the end user wants to tweak  mapreduce.admin.user.env it is 
a hard requirement to NOT forget adding 
LD_LIBRARY_PATH=$HADOOP_COMMON_HOME/lib/native back to whatever user wants to 
pass via that property. This strikes me as a pretty brittle implementation, 
unless of course mapreduce.admin.user.env is meant to be one of those hidden 
options that
you're better off not tweaking.

In summary, I really do think that one of the following needs to happen:
   * $HADOOP_COMMON_HOME/lib/native needs to be appended to whatever value of 
LD_LIBRARY_PATH there is in all cases
   * mapreduce.admin.user.env needs to be documents as a do not touch option
   * mapreduce.admin.user.env needs to be documents with a NOTE saying that 
setting it will invalidate the default setting of LD_LIBRARY_PATH (which will 
break loading of your native libraries)
                
> Job's shouldn't have to configure the location of compression libraries on 
> the server in mapred-site.xml
> --------------------------------------------------------------------------------------------------------
>
>                 Key: MAPREDUCE-3693
>                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-3693
>             Project: Hadoop Map/Reduce
>          Issue Type: Bug
>          Components: mrv2
>    Affects Versions: 0.23.0
>            Reporter: Roman Shaposhnik
>
> I have noticed that org.apache.hadoop.mapred.MapReduceChildJVM doesn't 
> forward the value of -Djava.library.path= from the parent JVM to the child 
> JVM. Thus if one wants to use native libraries for compression the only 
> option seems to be to manually include relevant java.library.path settings 
> into the mapred-site.xml (as mapred.[map|reduce].child.java.opts).
> This seems to be a change in behavior compared to MR1 where TaskRunner.java 
> used to do that:
> {noformat}
> String libraryPath = System.getProperty("java.library.path");
>     if (libraryPath == null) {
>       libraryPath = workDir.getAbsolutePath();
>     } else {
>       libraryPath += SYSTEM_PATH_SEPARATOR + workDir;
>     }
>     boolean hasUserLDPath = false;
>     for(int i=0; i<javaOptsSplit.length ;i++) {
>       if(javaOptsSplit[i].startsWith("-Djava.library.path=")) {
>         javaOptsSplit[i] += SYSTEM_PATH_SEPARATOR + libraryPath;
>         hasUserLDPath = true;
>         break;
>       }
>     }
>     if(!hasUserLDPath) {
>       vargs.add("-Djava.library.path=" + libraryPath);
>     }
>     for (int i = 0; i < javaOptsSplit.length; i++) {
>       vargs.add(javaOptsSplit[i]);
>     }
> {noformat}
> Is this a regression or a deliberate choice?

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to