현재 Apache Oozie를 사용하여 CDH 5.8에서 Spark Jobs를 실행하는 방법을 배우고 있지만 문제를 발견 한 것 같습니다.Oozie와 Hue가있는 Uber Jar를 통해 Spark Job 실행
IntelliJ> 빌드 아티팩트 (Uber JAR/Fat JAR)를 사용하여 스파크 작업을 컴파일 한 다음 나중에 매니페스트 파일을 제거합니다. 그런 다음 JAR을 실행하기 위해 spark-submit을 실행합니다. 그것은 잘 작동합니다.
하지만 Oozie와 Spark Action을 지정했을 때.
Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.SparkMain], exception invoking main(), java.lang.ClassNotFoundException: Class org.apache.oozie.action.hadoop.SparkMain not found
java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.oozie.action.hadoop.SparkMain not found
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2199)
at org.apache.oozie.action.hadoop.LauncherMapper.map(LauncherMapper.java:234)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:54)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:453)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:343)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1693)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
Caused by: java.lang.ClassNotFoundException: Class org.apache.oozie.action.hadoop.SparkMain not found
at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2105)
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2197)
... 9 more
job.properties :
oozie.use.system.libpath=false
security_enabled=False
dryrun=False
jobTracker=master.meshiang:8032
nameNode=hdfs://master.meshiang:8020
내 워크 플로우 : 나는 다음과 같은 오류가 발생합니다
<workflow-app name="CSV" xmlns="uri:oozie:workflow:0.4">
<start to="spark-2bab"/>
<kill name="Kill">
<message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<action name="spark-2bab">
<spark xmlns="uri:oozie:spark-action:0.1">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<master>local[*]</master>
<mode>client</mode>
<name>MySpark</name>
<class>ETL.CSVTransform</class>
<jar>/user/meshiang/jar/Spark-GetData.jar</jar>
<arg>work_id</arg>
<arg>csv_table</arg>
<arg>id/FirstName/Lastname</arg>
<arg>/user/meshiang/csv/ST1471448595.csv</arg>
<arg>,</arg>
</spark>
<ok to="End"/>
<error to="Kill"/>
</action>
<end name="End"/>
</workflow-app>
이미 무슨 짓을 :
-
,
- 작업 공간의/lib 폴더에 같은 jar 파일을 넣었을 때 위와 같은 방법으로 사용하십시오. 작업이 10 분 동안 실행되고 자체가 죽었으며 오류 코드 또는 메시지가 표시되지 않았습니다.
- 색조에서 Spark Example 작업을 실행했습니다. 나는 다음과 같은 메시지 을 가지고
오류 :
JA018
Error Message Job aborted due to stage failure: Task 0 in stage 0.0 failed 1 times, most recent failure: Lost task 0.0 in stage 0.0 (TID 0, localhost): java.lang.RuntimeException: Stream '/jars/oozie-examples.jar' was not found. at org.apache.spark.network.client.TransportResponseHandler.handle(TransportResponseHandler.java:219) at org.apache.spark.network.server.TransportChannelHandler.channelRead0(TransportChannelHandler.java:106) at org.apache.spark.network.server.TransportChannelHandler.channelRead0(Tr
내 질문 :
- 난 단지 내가 필요로하는 클래스를 컴파일하고 Oozie ShareLibs를 사용해야합니까? Oozie는 일반적으로 Uber JARS를 지원합니까?
- Pig/Sqoop을 사용하는 경우에도 동일한 작업을 수행해야합니까?
응답 해 주셔서 감사합니다!하지만 Oozie Yarn Job Launcher를 사용해 보았습니다.하지만 오류 메시지 [Main] org.apache.hadoop.mapreduce.v2.app.MRAppMaster : MRAppMaster를 시작하는 중에 오류가 발생했습니다. java. lang.NoSuchMethodError : org.apache.hadoop.yarn.webapp.util.WebAppUtils.getProxyHostsAndPortsForAmFilter'. 왜 그런가? –
이것은 원래 게시 한 것과 다른 이슈입니다. 원사 작업의'stdout' 로그에서'WebAppUtils' 클래스가 들어있는 jar 파일을 찾아야합니다.이 클래스에는 클래스가 두 가지있을 것입니다. 하나의 메소드 (메소드가없는 부정확 한 하나)를 제거 할 수 있지만, jar의 소스를 찾아 영구적으로 수정해야합니다. 감사, – YoungHobbit