복붙노트

[HADOOP] 실 클러스터 모드에 실패 oozie 런처

HADOOP

실 클러스터 모드에 실패 oozie 런처

그래서 (로컬 모드와 실 - 클라이언트에서 실행 성공) 실 클러스터 모드에 스파크 작업을 실행하기 위해 노력하고있어,하지만 난 oozie의 실행이 실패 문제로 실행하고 있습니다. 다음은 표준 오류의 오류 메시지입니다.

Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.JavaMain], main() threw exception, java.lang.NoSuchMethodError: org.apache.spark.network.util.JavaUtils.byteStringAsBytes(Ljava/lang/String;)J
org.apache.oozie.action.hadoop.JavaMainException: java.lang.NoSuchMethodError: org.apache.spark.network.util.JavaUtils.byteStringAsBytes(Ljava/lang/String;)J
    at org.apache.oozie.action.hadoop.JavaMain.run(JavaMain.java:60)
    at org.apache.oozie.action.hadoop.LauncherMain.run(LauncherMain.java:46)
    at org.apache.oozie.action.hadoop.JavaMain.main(JavaMain.java:38)
    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:497)
    at org.apache.oozie.action.hadoop.LauncherMapper.map(LauncherMapper.java:228)
    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.LocalContainerLauncher$EventHandler.runSubtask(LocalContainerLauncher.java:370)
    at org.apache.hadoop.mapred.LocalContainerLauncher$EventHandler.runTask(LocalContainerLauncher.java:295)
    at org.apache.hadoop.mapred.LocalContainerLauncher$EventHandler.access$200(LocalContainerLauncher.java:181)
    at org.apache.hadoop.mapred.LocalContainerLauncher$EventHandler$1.run(LocalContainerLauncher.java:224)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NoSuchMethodError: org.apache.spark.network.util.JavaUtils.byteStringAsBytes(Ljava/lang/String;)J
    at org.apache.spark.util.Utils$.memoryStringToMb(Utils.scala:993)
    at org.apache.spark.util.MemoryParam$.unapply(MemoryParam.scala:27)
    at org.apache.spark.deploy.yarn.ClientArguments.parseArgs(ClientArguments.scala:168)
    at org.apache.spark.deploy.yarn.ClientArguments.<init>(ClientArguments.scala:58)
    at org.apache.spark.deploy.yarn.Client$.main(Client.scala:966)
    at org.apache.spark.deploy.yarn.Client.main(Client.scala)
    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:497)
    at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:674)
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:180)
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:205)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:120)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
    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:497)
    at org.apache.oozie.action.hadoop.JavaMain.run(JavaMain.java:57)
    ... 19 more

이 작업은 스파크 1.5.2에서 실행, 그래서 나는 다운로드하여 가리 키도록 내 스파크 설정 파일에 spark.yarn.jar 필드를 HDFS에 스파크 조립-1.5.2-hadoop2.6.0.jar 파일을 넣어 설정 항아리 경로, 그리고 항아리가있는 디렉토리를 가리 키도록 내 job.properties 파일의 oozie.libpath 필드를 설정합니다.

I는 표준 출력 로그 클래스 경로 부에서 스파크 다른 가능한 버전을 검색하고, 스파크 1.3.0-cdh5.4.5-얀 shuffle.jar 다행히도, 스파크 어셈블리 1.5 (촬상되고, 두 인스턴스를 발견했다. 2 hadoop2.6.0.jar 너무 내가) 제대로 경로를 설정하고 다른 곳에서 포착되고있다.

그래서, 문제는 oozie 것 같다, 또는 oozie 실행기는 (작업이 실행하려고하는 시스템에 설치되어있는) 어떤 이유로 스파크 1.3을 사용하는 것이 디폴트이다. 나는 job.properties 파일에 false로 oozie.use.system.libpath 필드를 설정했지만, 도움이하지 않는 것 같습니다. 내가 할 수있는 어떤 아이디어가 포착되는 스파크 1.3를 방지 할 수있는, 또는 다른 어떤 솔루션은 내가 직면하고있는 NoSuchMethodError를 해결할 수있다?

어떤 도움을 크게, 감사 감사하겠습니다.

해결법

    from https://stackoverflow.com/questions/34346013/failing-oozie-launcher-on-yarn-cluster-mode by cc-by-sa and MIT license