2017-10-31 45 views
2

클래스 경로의로드 순서 때문에 oozie 워크 플로 실행 프로그램이 실패 할 수 있습니다 (KILLED 상태). SparkSubmit에서 ivy 2.4.0의 메소드 호출이 있지만이 특정 메소드는 ivy 2.0.0-rc2에 없습니다. 워크 플로우 프로세스는 대개 대부분의 시간당 명목 시간 동안 정상적으로 실행되지만, 아이비 2.4 대신 ivy 2.0이로드되기 때문에 실행이 자주 실패합니다.Oozie 's Spark Submit는 아이비를 사용합니다. 2.4 CDH에서 메소드가 누락되었습니다. 5.9.2

2017-10-31 20:37:30,339 WARN org.apache.oozie.action.hadoop.SparkActionExecutor: SERVER[xxxx-oozie-lv-102.xxx.net] USER[xxxxx] GROUP[-] TOKEN[] APP[xxxx-proc-oozie] JOB[0143924-170929213137940-oozie-oozi-W] ACTION[[email protected]] Launcher exception: org.apache.ivy.core.module.descriptor.DefaultModuleDescriptor.setDefaultConf(Ljava/lang/String;)V 
java.lang.NoSuchMethodError: org.apache.ivy.core.module.descriptor.DefaultModuleDescriptor.setDefaultConf(Ljava/lang/String;)V 
    at org.apache.spark.deploy.SparkSubmitUtils$.resolveMavenCoordinates(SparkSubmit.scala:1054) 
    at org.apache.spark.deploy.SparkSubmit$.prepareSubmitEnvironment(SparkSubmit.scala:287) 
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:154) 
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121) 
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) 
    at org.apache.oozie.action.hadoop.SparkMain.runSpark(SparkMain.java:264) 
    at org.apache.oozie.action.hadoop.SparkMain.run(SparkMain.java:214) 
    at org.apache.oozie.action.hadoop.LauncherMain.run(LauncherMain.java:60) 
    at org.apache.oozie.action.hadoop.SparkMain.main(SparkMain.java:52) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.apache.oozie.action.hadoop.LauncherMapper.map(LauncherMapper.java:233) 
    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:422) 
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1912) 
    at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158) 

클라우 데라 분산 하둡 아이비 2.0.0-RC2가 들어 보인다,하지만 SparkSubmit 아이비 버전 2.4.0을 필요로하는 것 같다 실패하면, (검열) oozie 런처 로그는이 스택 호출을 보여줍니다. 아이비 2.4를 내 항아리에 넣고 2.0을 제외 시키려고했지만, 이것은 내 프로세스가 시작되기 전이라 할 수 있습니다 (어쩌면 약간 어리석은 일입니다). 나는 2.4.0 버전이 oozie 로딩 프로세스에서 어떤 우선 순위를 갖도록 강제해야하고, oozie.launcher.mapreduce.user.classpath.first을 true 또는 false로 시도 했어야한다고 생각합니다. - 어떤 경우 에든, 작업 속성 파일은 /를 포함해야합니다 :

oozie.libpath=${nameNode}/user/spark/share/XXXX-spark/ 
oozie.use.system.libpath=true 

는 참고 : LIBPATH에 담쟁이 덩굴을 제거하면 위의 차이를 보이지 않았다.

It's likely that the workflow needs an extra flag or ... like this: 

<configuration> 
    <property> 
     <name>oozie.launcher.mapreduce.map.java.opts</name> 
     <value>-verbose</value> 
    </property> 
</configuration> 

클러스터를 관리하는 팀 (SRE)은 CDH 5.9.2와 함께 원래의 병을 사용하기를 원합니다.

CDH를 그대로 유지하기 위해 SRE 요구 사항을 충족시키는 방식으로 workflow.xml, 작업 속성, 빌드 또는 ...을 변경하여 spark-submit에서 ivy 2.4 (2.0 제외)를 사용하도록 강제 설정하려면 어떻게해야합니까? 캐시를 무효화하여이를 해결할 수 있습니까?

하면 어떤 경로에 항아리 나 ...

+1

당신은 (즉, 단지 Oozie 런처 컨테이너) 또는'실 - client' 모드에서'local' 모드에서 스파크 작업을 실행합니까? 'yarn-client'의 경우 드라이버 나 executor (Oozie libpath 나'oozie.launcher' props를 상속받지 않습니다)에서 예외가 발생합니까? –

+0

https://stackoverflow.com/questions/42689304/spark-job-that-use-hive-context-failing-in-oozie –

+0

첫 번째로와 유사 :이 문제는 community.cloudera.com/t5/Batch- 처리 및 워크 플로우/.... 2nd @SamsonScharfrichter ...이 문제는 기본 클라이언트 모드를 사용하는 원사 - 클러스터 모드를 사용하여 발생하며 워크 플로 로그에 표시됩니다. 나는 당신의 질문의 두 번째 부분에 대답 할 지 모르겠습니다. 나는 링크에서 제안을 시도했지만 여전히 17 번 실행하지 못했습니다. 전형적인 실패입니다. – codeaperature

답변

1

클라우 데라의 불꽃에 접근하는 클래스 패스에 담쟁이 2.4.0 단지를 추가 언급하는 것은 HDFS에 담쟁이 항아리를 넣어 정확히 몇 가지 세부 사항을 필요로하는 양해하여 주시기 바랍니다 는 https://github.com/cloudera/spark/blob/cdh5-1.6.0_5.9.2/pom.xml이고 Ivy 2.4.0을 사용하지만 CDH 배포본은 Ivy 2.0.0-rc2와 함께 제공됩니다.

이 문제를 해결하려면 hdfs folder = /user/oozie/share/lib/lib_{timestamp}/spark에서 ivy 2.0.0-rc2 jar가 2.4 버전 (이상한 이름은 org.apache.ivy_ivy-2.4.0.jar ...으로 바뀌었지만 중요하지 않다고 생각합니다). 항아리를 교체하고 오우거 관리 작업 (oozie admin -sharelibupdate spark)을 실행하면이 워크 플로가 시작된 후에 프로세스가 올바르게 실행됩니다.

Samson의 설명에 따르면, 아이비 캐시는 나중에 추가되는 새 노드로 인해 일부 노드에서 변경되어 간헐적 인/간헐적 인 문제가 발생했습니다.