2015-11-16 3 views
5

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") 

Antwort

7

In diesen Tagen gibt es keine aus der Box Lösung Vermeiden Sie die Verwendung von Sparks für den Yarn-Modus.

Funken einreichen: der Job zu laufen, funkt einreichen lief den org.apache.spark.deploy.yarn.Client Code auf der konfigurierten Umgebung (oder nicht, wie in Ihrem Fall konfiguriert). Hier ist der Client, der die Aufgabe einreicht: https://github.com/apache/spark/blob/master/yarn/src/main/scala/org/apache/spark/deploy/yarn/Client.scala

Was aber die Lösung?

  1. Es gab eine Option, um das Client-Verhalten außer Kraft zu setzen, wie hier http://blog.sequenceiq.com/blog/2014/08/22/spark-submit-in-java/ gefunden werden konnte so dass Sie ein zusätzliches env Variablen hinzufügen könnten, usw. Später Funke das Garn Client privat zum Funke Paket gemacht (~ die Ende 2014). Also, wenn Ihr Paket org.apache.spark zu nennen - ist möglicherweise eine Option ..

  2. Der eingebaute auf der Funken vorlegen Lösung (mit ihren Vor- und Nachteilen) ist hier beschrieben: http://www.henningpetersen.com/post/22/running-apache-spark-jobs-from-applications

Was ist mit SparkR.R, es verwendet Funken sumbit intern: https://github.com/apache/spark/blob/master/R/pkg/R/sparkR.R wenn es launchBackend() aufrufen von https://github.com/apache/spark/blob/master/R/pkg/R/client.R und geben dort alle Umgebung bereits + Argumente

+0

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

+0

Sorry, ich hatte keine Gelegenheit, nach Mesos zu sehen –

Verwandte Themen