Kann keine Funke-Anwendung mit einer Java-Klasse im Cluster aufrufen

9

Unten ist die Struktur meines Projekts:

Funkenanwendung :

  

scala1.scala // Ich rufe die Java-Klasse von dieser Klasse auf.

     

java.java // Dies wird eine weitere Funkenanwendung an die Garngruppe senden.

Die spark-Anwendung, die von der Java-Klasse ausgelöst wird :

  

scala2.scala

Mein Referenz-Tutorial ist hier

Wenn ich meine Java-Klasse von scala1.scala über spark-submit im lokalen Modus starte, wird die zweite Funke-Anwendung scala2.scala ausgelöst und funktioniert wie erwartet.

Aber wenn ich dieselbe Anwendung über spark-submit im Garn-Cluster austrage, wird der folgende Fehler angezeigt!

%Vor%

Die Verzeichnisstruktur meines Projekts ist unten angegeben:

%Vor%

Unten ist der Java-Code, der die zweite Spark-Anwendung aufruft:

%Vor%

Der spark-submit-Befehl, mit dem die erste Funke-Anwendung lokal ausgeführt wird:

  

spark-submit --class scala1 --master -garn --deploy-mode cluster --num-executors 2 --executor-cores 2 --conf spark.yarn.executor.memoryOverhead = 600 --conf spark.yarn .submit.waitAppCompletion = false /home/ankushuser/kafka_retry/kafka_retry_test/sparkflightaware/target/sparkflightaware-0.0.1-SNAPSHOT-jar-with-dependencies.jar

Wenn ich den Befehl spark-submit lokal ausführe, ruft er die Java-Klasse auf und der Befehl spark-submit für die zweite scala2-Anwendung funktioniert einwandfrei.

Wenn ich es im Garnmodus laufe, dann stehe ich vor dem Problem.

Danke für Ihre Hilfe.

    
ankush reddy 05.05.2017, 06:57
quelle

1 Antwort

0

Da es ein Kopfgeld gibt, werde ich es auch als Antwort zurückschicken - aber in Wirklichkeit möchte ich dies als ein Duplikat markieren, da die eigentliche Ausnahme diejenige ist, die in einer anderen Frage behandelt wird, und antwortete:

Es wird dadurch verursacht, dass hdp.version nicht korrekt ersetzt wird . Sie müssen hdp.version in der Datei java-opts unter $ SPARK_HOME / conf setzen.

Alternativ verwenden Sie

--driver-java-options="-Dhdp.version=INSERT_VERSION_STRING_HERE" --conf "spark.executor.extraJavaOptions=-Dhdp.version=INSERT_VERSION_STRING_HERE" in Ihrem spark-submit und vergewissern Sie sich, dass Sie die korrekte Versionsstring verwenden, wie im Unterverzeichnis von /usr/hdp.

Wenn Sie beim Aufruf von client.submit aus Ihrem Code bleiben möchten, müssen Sie diese Zeilen in die --arg einfügen, die Sie in Ihrem Code erstellen.

    
Rick Moritz 11.05.2017 13:19
quelle

Tags und Links