我試圖在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")
謝謝你,我沒想到這如此繁瑣。你有沒有嘗試在mesos上使用spark?是否會更容易,因爲我們明確提供mesos主地址端口來觸發? – Bamqf
對不起,沒有機會檢查Mesos –