[
https://issues.apache.org/jira/browse/MAPREDUCE-6293?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14381083#comment-14381083
]
Sangjin Lee commented on MAPREDUCE-6293:
----------------------------------------
The root cause is this.
Cascading loads HadoopTupleMapFactory using the thread context classloader. The
thread on which the task runs us "uber-SubtaskRunner". This thread is created
(directly or indirectly) through LocalContainerLauncher's service start. At
that point, the job classloader exists but is not yet set as the TCCL. Thus,
these threads do not inherit the job classloader as the TCCL (TCCLs are
inherited from the "parent thread" that created the thread).
It should be fixed in the same manner as what we did with the committer event
handler. I'll post a patch shortly.
> uberized job fails with the job classloader enabled
> ---------------------------------------------------
>
> Key: MAPREDUCE-6293
> URL: https://issues.apache.org/jira/browse/MAPREDUCE-6293
> Project: Hadoop Map/Reduce
> Issue Type: Bug
> Components: mr-am
> Affects Versions: 2.6.0
> Reporter: Sangjin Lee
> Assignee: Sangjin Lee
>
> An uberized job fails if the job classloader is enabled and the job needs to
> use the thread context classloader to load a class. Some example error in the
> log:
> {quote}
> 2015-03-23 23:28:34,675 INFO [main\]
> org.apache.hadoop.mapreduce.v2.util.MRApps: Creating job classloader
> ...
> 2015-03-23 23:28:42,096 ERROR [uber-SubtaskRunner\]
> cascading.provider.ServiceLoader: unable to find service class:
> cascading.tuple.hadoop.collect.HadoopTupleMapFactory, with exception:
> java.lang.ClassNotFoundException:
> cascading.tuple.hadoop.collect.HadoopTupleMapFactory
> {quote}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)