2015-11-16 10 views
5

​​を直接使用する代わりに、scala sbtアプリケーションでspark on yarnを使用しようとしています。SparkアプリケーションにYarnクラスタ構成を追加

私はすでに遠隔糸クラスターを稼働しており、SparkRの糸クラスター実行スパークジョブに接続できます。しかし、スカラアプリケーションで同様のことをしようとすると、環境変数を糸構成にロードせず、代わりにデフォルトの糸番地とポートを使用することができました。

SBTアプリケーションは、単純なオブジェクトです:

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

私はのIntelliJ IDEAでこのアプリケーションを実行すると、ログは言う:

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

それは0.0.0.0があるので、環境が正しく追加されていないようです遠隔糸資源管理ノードのIPではなく、私のは、以下を有する:

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" 

と私yarn-site.xmlがあります

<property> 
    <name>yarn.resourcemanager.hostname</name> 
    <value>master</value> 
</property> 

どのように私が正しく、このSBTスパークアプリケーションに糸クラスタ構成の環境変数を追加することができますか?

追加情報:

私のシステムはUbuntu14.04で、糸のクラスタに接続することができSparkRコードは次のようになります。

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

答えて

7

これらの日にボックスソリューションのないうちはありませんヤーンモードのスパーク送信の使用を避けてください。

スパーク提出:ジョブを実行するために、スパーク提出構成された環境でのorg.apache.spark.deploy.yarn.Clientコードを実行します(または、あなたの場合のように構成されていません)。タスクの提出を行うクライアントは次のとおりです。https://github.com/apache/spark/blob/master/yarn/src/main/scala/org/apache/spark/deploy/yarn/Client.scala

解決方法はありますか?あなたは( 後にスパークがスパークパッケージに糸クライアントがプライベート作っなど、追加のENV変数を追加することができるように、ここでhttp://blog.sequenceiq.com/blog/2014/08/22/spark-submit-in-java/ を見つけることができるよう

  1. は、クライアントの動作を無効にするオプションがありました〜 2014年末)。あなたのパッケージのorg.apache.sparkに名前を付けるのであれば - オプション...

  2. (その利点と欠点を持つ)火花提出するソリューションの上に構築された可能性があり、ここで説明されています http://www.henningpetersen.com/post/22/running-apache-spark-jobs-from-applications

SparkR。R、それは火花sumbit内部的に使用しています:それは

+0

引数をhttps://github.com/apache/spark/blob/master/R/pkg/R/client.R からlaunchBackend()を呼び出し、すべての環境が+すでに設定が与えるとき https://github.com/apache/spark/blob/master/R/pkg/R/sparkR.R はありがとう、私はこれを期待していませんでしたとても面倒です。また、mesosのアプリケーションでsparkを使ってみましたか?私たちがmesosマスターアドレスポートを明示的に起動するので、それは簡単でしょうか? – Bamqf

+0

申し訳ありませんが、メゾスをチェックする機会はありませんでした –

関連する問題