복붙노트

[HADOOP] Spark Shell with Yarn - 오류 : 원사 응용 프로그램이 이미 종료되었습니다! 응용 프로그램 마스터를 종료 할 수 없거나 실행하지 못했을 수 있습니다.

HADOOP

Spark Shell with Yarn - 오류 : 원사 응용 프로그램이 이미 종료되었습니다! 응용 프로그램 마스터를 종료 할 수 없거나 실행하지 못했을 수 있습니다.

이 질문의 후속 작업으로, 단일 노드 컴퓨터에서 Spark 2.1.1 (Hadoop 2.8.0)을 사용하려고하면 새로운 오류가 발생합니다. 스파크 셸을

spark-shell

문제없이 시작됩니다. 일반적인 start-dfs.sh와 start-yarn.sh로 Hadoop을 시작한 후,

spark-shell --master yarn

다음 오류가 발생합니다.

17/06/10 12:00:07 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
17/06/10 12:00:12 ERROR SparkContext: Error initializing SparkContext.
org.apache.spark.SparkException: Yarn application has already ended! It might have been killed or unable to launch application master.
    at org.apache.spark.scheduler.cluster.YarnClientSchedulerBackend.waitForApplication(YarnClientSchedulerBackend.scala:85)
    at org.apache.spark.scheduler.cluster.YarnClientSchedulerBackend.start(YarnClientSchedulerBackend.scala:62)
    at org.apache.spark.scheduler.TaskSchedulerImpl.start(TaskSchedulerImpl.scala:156)
    at org.apache.spark.SparkContext.<init>(SparkContext.scala:509)
    at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2320)
    at org.apache.spark.sql.SparkSession$Builder$$anonfun$6.apply(SparkSession.scala:868)
    at org.apache.spark.sql.SparkSession$Builder$$anonfun$6.apply(SparkSession.scala:860)
    at scala.Option.getOrElse(Option.scala:121)
    at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:860)
    at org.apache.spark.repl.Main$.createSparkSession(Main.scala:96)
    at $line3.$read$$iw$$iw.<init>(<console>:15)
    at $line3.$read$$iw.<init>(<console>:42)
    at $line3.$read.<init>(<console>:44)
    at $line3.$read$.<init>(<console>:48)
    at $line3.$read$.<clinit>(<console>)
    at $line3.$eval$.$print$lzycompute(<console>:7)
    at $line3.$eval$.$print(<console>:6)
    at $line3.$eval.$print(<console>)
    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 scala.tools.nsc.interpreter.IMain$ReadEvalPrint.call(IMain.scala:786)
    at scala.tools.nsc.interpreter.IMain$Request.loadAndRun(IMain.scala:1047)
    at scala.tools.nsc.interpreter.IMain$WrappedRequest$$anonfun$loadAndRunReq$1.apply(IMain.scala:638)
    at scala.tools.nsc.interpreter.IMain$WrappedRequest$$anonfun$loadAndRunReq$1.apply(IMain.scala:637)
    at scala.reflect.internal.util.ScalaClassLoader$class.asContext(ScalaClassLoader.scala:31)
    at scala.reflect.internal.util.AbstractFileClassLoader.asContext(AbstractFileClassLoader.scala:19)
    at scala.tools.nsc.interpreter.IMain$WrappedRequest.loadAndRunReq(IMain.scala:637)
    at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:569)
    at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:565)
    at scala.tools.nsc.interpreter.ILoop.interpretStartingWith(ILoop.scala:807)
    at scala.tools.nsc.interpreter.ILoop.command(ILoop.scala:681)
    at scala.tools.nsc.interpreter.ILoop.processLine(ILoop.scala:395)
    at org.apache.spark.repl.SparkILoop$$anonfun$initializeSpark$1.apply$mcV$sp(SparkILoop.scala:38)
    at org.apache.spark.repl.SparkILoop$$anonfun$initializeSpark$1.apply(SparkILoop.scala:37)
    at org.apache.spark.repl.SparkILoop$$anonfun$initializeSpark$1.apply(SparkILoop.scala:37)
    at scala.tools.nsc.interpreter.IMain.beQuietDuring(IMain.scala:214)
    at org.apache.spark.repl.SparkILoop.initializeSpark(SparkILoop.scala:37)
    at org.apache.spark.repl.SparkILoop.loadFiles(SparkILoop.scala:105)
    at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply$mcZ$sp(ILoop.scala:920)
    at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:909)
    at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:909)
    at scala.reflect.internal.util.ScalaClassLoader$.savingContextLoader(ScalaClassLoader.scala:97)
    at scala.tools.nsc.interpreter.ILoop.process(ILoop.scala:909)
    at org.apache.spark.repl.Main$.doMain(Main.scala:69)
    at org.apache.spark.repl.Main$.main(Main.scala:52)
    at org.apache.spark.repl.Main.main(Main.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:743)
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:187)
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:212)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:126)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
17/06/10 12:00:12 WARN YarnSchedulerBackend$YarnSchedulerEndpoint: Attempted to request executors before the AM has registered!
17/06/10 12:00:12 WARN MetricsSystem: Stopping a MetricsSystem that is not running

나는 Spark / Yarn에 익숙하지 않아서 해결책을 찾을 곳이 정말로 없다. 나는 (Java 8을 사용하고 있기 때문에 비슷한 문제가있는 것처럼 보이지만) 여기에 제안 된 것을 시도했지만 아무런 효과가 없었다. Java 7 (JAVA_HOME 변수를 JDK 7 설치 폴더로 설정)을 사용해 보았지만 동일한 오류가 발생했습니다. 아이디어 있니?

해결법

  1. ==============================

    1.나는 Liming Cen이 대답 한 것과 비슷한 방법을 사용하여이 문제를 해결할 수 있었다.

    나는 Liming Cen이 대답 한 것과 비슷한 방법을 사용하여이 문제를 해결할 수 있었다.

    유일한 차이점은 zip 파일로 압축 된 $ SPARK_HOME / libexec / jars에 들어있는 모든 JAR 파일을 HDFS에 추가했기 때문입니다.

    $ SPARK_HOME / libexec / conf / spark-defaults.conf에 다음 줄을 추가했습니다 :

    spark.yarn.archive = hdfs : ///user/MY_USERNAME/spark-archive.zip

  2. ==============================

    2.모든 YARN 노드에 대해 Java 1.8이 제대로 설치 / 구성되어 있지 않을 가능성이 있습니다 ... Cloudera를 사용하는 경우 "Java Home Directory"속성이 모든 호스트에 대해 올바르게 구성되어 있는지 확인해야합니다 특정 호스트의 "구성"탭. (예 : /usr/lib/jvm/jdk1.8.0_144)

    모든 YARN 노드에 대해 Java 1.8이 제대로 설치 / 구성되어 있지 않을 가능성이 있습니다 ... Cloudera를 사용하는 경우 "Java Home Directory"속성이 모든 호스트에 대해 올바르게 구성되어 있는지 확인해야합니다 특정 호스트의 "구성"탭. (예 : /usr/lib/jvm/jdk1.8.0_144)

  3. ==============================

    3.반드시 --master-yarn을 사용하여 원사에 스파크 셸을 실행할 수 있습니다. 그러나 spark-shell을 실행하려면 spark shell의 경우 드라이버가 클라이언트에서 실행되기 때문에 'deploy-mode client'를 사용해야합니다. 어떤 오류가 발생하면 이것을 시도하고 게시하십시오.

    반드시 --master-yarn을 사용하여 원사에 스파크 셸을 실행할 수 있습니다. 그러나 spark-shell을 실행하려면 spark shell의 경우 드라이버가 클라이언트에서 실행되기 때문에 'deploy-mode client'를 사용해야합니다. 어떤 오류가 발생하면 이것을 시도하고 게시하십시오.

    ./bin/spark-shell --master yarn --deploy-mode client
    
  4. from https://stackoverflow.com/questions/44472042/spark-shell-with-yarn-error-yarn-application-has-already-ended-it-might-have by cc-by-sa and MIT license