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!
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.
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.
Tags und Links java hadoop apache-spark yarn