[
https://issues.apache.org/jira/browse/MAPREDUCE-4052?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13924482#comment-13924482
]
Jian He commented on MAPREDUCE-4052:
------------------------------------
The main problem here is that client is constructing the commands and
environments for container launch depending on the client machine OS, but if
server(NM) is running a different OS, NM is not able to parse the commands and
environments.
The patch creates two constants in ApplicationConstants for PARAMETER_EXPANSION
and CLASS_PATH_SEPARATOR as known that they are different between Windows and
Linux. User application is supposed to use these constants to construct their
commands and environments when constructing the ContainerLaunchContext. When
NM tries to launch the container, it will first replace the constants with the
correct characters depending on its own OS. Changed MR and DistributedShell to
do so.
> Windows eclipse cannot submit job from Windows client to Linux/Unix Hadoop
> cluster.
> -----------------------------------------------------------------------------------
>
> Key: MAPREDUCE-4052
> URL: https://issues.apache.org/jira/browse/MAPREDUCE-4052
> Project: Hadoop Map/Reduce
> Issue Type: Bug
> Components: job submission
> Affects Versions: 0.23.1, 2.2.0
> Environment: client on the Windows, the the cluster on the suse
> Reporter: xieguiming
> Assignee: xieguiming
> Attachments: MAPREDUCE-4052-0.patch, MAPREDUCE-4052.1.patch,
> MAPREDUCE-4052.patch
>
>
> when I use the eclipse on the windows to submit the job. and the
> applicationmaster throw the exception:
> Exception in thread "main" java.lang.NoClassDefFoundError:
> org/apache/hadoop/mapreduce/v2/app/MRAppMaster
> Caused by: java.lang.ClassNotFoundException:
> org.apache.hadoop.mapreduce.v2.app.MRAppMaster
> at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
> at java.security.AccessController.doPrivileged(Native Method)
> at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
> Could not find the main class:
> org.apache.hadoop.mapreduce.v2.app.MRAppMaster. Program will exit.
> The reasion is :
> class Apps addToEnvironment function, use the
> private static final String SYSTEM_PATH_SEPARATOR =
> System.getProperty("path.separator");
> and will result the MRApplicationMaster classpath use the ";" separator.
> I suggest that nodemanger do the replace.
--
This message was sent by Atlassian JIRA
(v6.2#6252)