2015-11-16 102 views
5

我試圖在scala sbt應用程序中使用紗線上的spark而不是直接使用​​。將紗線羣集配置添加到Spark應用程序

我已經有一個遠程紗線集羣正在運行,並且我可以連接到SparkR中的紗線集羣運行火花作業。但是當我嘗試在scala應用程序中做類似的事情時,它無法將我的環境變量加載到紗線配置中,而是使用默認紗線地址和端口。

的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,我的spark-env.sh有:

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

這些天來,有沒有現成的解決方案,以避免使用紗線模式的spark-submit用法。

星火提交:運行作業,火花提交運行配置的環境org.apache.spark.deploy.yarn.Client代碼(或你的情況沒有配置)。這裏的客戶端提交任務:https://github.com/apache/spark/blob/master/yarn/src/main/scala/org/apache/spark/deploy/yarn/Client.scala

什麼解決方案呢?

  1. 有覆蓋客戶端行爲的選項,可以在這裏找到http://blog.sequenceiq.com/blog/2014/08/22/spark-submit-in-java/ ,這樣你可以添加一個額外的ENV變量等 後來星火製成的紗線客戶專用火花包(約佔2014年底)。所以,如果命名您的包org.apache.spark - 可能是一種選擇..

  2. 內置的火花提交解決方案(其優點和缺點)頂部這裏描述: http://www.henningpetersen.com/post/22/running-apache-spark-jobs-from-applications

怎麼樣SparkR。R,它採用內部火花透過: https://github.com/apache/spark/blob/master/R/pkg/R/sparkR.R 時,它調用從https://github.com/apache/spark/blob/master/R/pkg/R/client.R launchBackend(),並給那裏所有的環境已經設置+論據

+0

謝謝你,我沒想到這如此繁瑣。你有沒有嘗試在mesos上使用spark?是否會更容易,因爲我們明確提供mesos主地址端口來觸發? – Bamqf

+0

對不起,沒有機會檢查Mesos –

相關問題