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

Scott Carey commented on MAPREDUCE-1478:
----------------------------------------

This approach will work.

I see another possibility that is simpler, but has some serious drawbacks.

Instead of separating the source directories and classpaths at build time, file 
set includes/excludes could be used at jar creation time to create two jar 
files.
Benefit:  simpler, requires no code changes:
Drawback:  does not actually disentangle the code, which is more brittle and 
could lead to confusion depending on what changes are in the user lib jars.

That is a big drawback.  

The above approach is more complicated but does enforce true separation.
In the long run, tackling the disentangling of the lib from the system is a 
requirement but the extra complexity requires more careful review.  It also is 
the bulk of the work required to make the lib a truly separate library -- for 
maven or OSGi.

I'm not an expert on the details of the API and code changes needed for clean 
separation as a consequence of this.  The callback changes seem like an 
improvement.  Duplication of wrappers and reflective access are usually signs 
that there is a better way, but that better way almost always requires an API 
break.

Overall, I like this approach because it is moving in the right direction for 
separating the core execution from more volatile or user-extensible library 
code. 

> Separate the mapred.lib and mapreduce.lib classes to a different jar and 
> include the user jar ahead of the lib jar.
> -------------------------------------------------------------------------------------------------------------------
>
>                 Key: MAPREDUCE-1478
>                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-1478
>             Project: Hadoop Map/Reduce
>          Issue Type: Improvement
>          Components: task
>            Reporter: Owen O'Malley
>         Attachments: MAPREDUCE-1478.patch, move.sh
>
>
> Currently the user can't include updated library jars as part of their job. 
> By pulling out the lib classes we can include the classes (eg. 
> TextInputFormat) in the user's jar and get their version and not the system 
> installed one.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to