나는 tcsh가 스크립트 파일을 실행하기 위해 하둡 스트리밍을 사용스크립트를 통해 Java 응용 프로그램을 실행 : java.lang.NoClassDefFoundError가
:-- First copy the jar files to the Hadoop filesystem,
so that they are next to inputdir and outputdir. --
cp App/* /hadoop/jardir/
-- Run Hadoop --
hadoop jar /usr/lib/hadoop/contrib/streaming/hadoop-streaming-0.20.2-cdh3u4.jar \\
-D mapred.task.timeout=120000000 \\
-input "/hadoop/inputdir/" -output "/hadoop/outputdir/" \\
-mapper script.sh -reducer script.sh -file script.sh \\
-jobconf mapred.map.tasks=1 -jobconf mapred.reduce.tasks=0 >>& log.txt
이 스크립트 파일은 다음과 같이 자바를 호출
Exception in thread "main" java.lang.NoClassDefFoundError: some/JavaApplication
Caused by: java.lang.ClassNotFoundException: some.JavaApplication
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:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: some.JavaApplication. Program will exit.
:
java -cp /hadoop/jardir/SomeJavaApp.jar:/hadoop/jardir/* some.JavaApplication
내가 명시 적으로 자바에게 클래스 경로를 말씀에도 불구하고, 실행은 실패 이미 Hadoops -libjars
매개 변수를 설정하는 것과 같은 다양한 제안을 시도했지만 도움이되지 않았습니다.
Hadoop Streaming을 사용할 때 스크립트를 통해 Java 응용 프로그램을 실행하려면 어떻게해야합니까?