Ich versuche, Funken auf Garn in einer scala sbt Anwendung statt spark-submit
direkt zu verwenden.Hinzufügen Garn Cluster-Konfiguration zu Spark-Anwendung
Ich habe bereits eine Remote-Garn-Cluster läuft und ich kann mit dem Garn Cluster Run Spark Jobs in SparkR verbinden. Aber wenn ich versuche, in einer Scala-Anwendung ähnliche Dinge zu tun, kann ich meine Umgebungsvariablen nicht in die Garnkonfigurationen laden und stattdessen die Standard-Garnadresse und den Port verwenden.
Die sbt Anwendung ist nur ein einfaches Objekt:
object simpleSparkApp {
def main(args: Array[String]): Unit = {
val conf = new SparkConf()
.setAppName("simpleSparkApp")
.setMaster("yarn-client")
.set("SPARK_HOME", "/opt/spark-1.5.1-bin-hadoop2.6")
.set("HADOOP_HOME", "/opt/hadoop-2.6.0")
.set("HADOOP_CONF_DIR", "/opt/hadoop-2.6.0/etc/hadoop")
val sc = new SparkContext(conf)
}
}
Wenn ich diese Anwendung in IntelliJ IDEA laufen, sagt das Protokoll:
15/11/15 18:46:05 INFO RMProxy: Connecting to ResourceManager at /0.0.0.0:8032
15/11/15 18:46:06 INFO Client: Retrying connect to server: 0.0.0.0/0.0.0.0:8032. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
15/11/15 18:46:07 INFO Client: Retrying connect to server: 0.0.0.0/0.0.0.0:8032. Already tried 1 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
...
Es scheint, die Umwelt nicht richtig hinzugefügt, da 0.0.0.0
ist nicht die IP des Remote-Garn-Ressourcen-Manager-Knoten und meine spark-env.sh
hat:
export JAVA_HOME="/usr/lib/jvm/ibm-java-x86_64-80"
export HADOOP_HOME="/opt/hadoop-2.6.0"
export HADOOP_CONF_DIR="$HADOOP_HOME/etc/hadoop"
export SPARK_MASTER_IP="master"
und meine yarn-site.xml
hat:
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
Wie kann ich richtig Umgebungsvariablen des Garns Cluster-Konfiguration auf diese sbt Spark-Anwendung hinzufügen?
Zusätzliche Informationen:
Mein System ist Ubuntu14.04 und der SparkR Code, der auf das Garn Cluster das sieht aus wie eine Verbindung herstellen können:
Sys.setenv(HADOOP_HOME = "/opt/hadoop-2.6.0")
Sys.setenv(SPARK_HOME = "/opt/spark-1.4.1-bin-hadoop2.6")
.libPaths(c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib"), .libPaths()))
library(SparkR)
sc <- sparkR.init(master = "yarn-client")
Vielen Dank, ich hatte nicht erwartet, dies nicht zu so schwerfällig sein. Haben Sie in Anwendungen auf Mesos auch die Verwendung von Spark versucht? Wäre es einfacher, da wir den Mesos-Master-Adressport explizit für den Funke bereitstellen? – Bamqf
Sorry, ich hatte keine Gelegenheit, nach Mesos zu sehen –