簡體   English   中英

將Yarn集群配置添加到Spark應用程序

[英]Add Yarn cluster configuration to Spark application

我試圖在scala sbt應用程序中使用spark-submit而不是直接使用spark-submit

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

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>

如何正確地將Yarn群集配置的環境變量添加到此sbt Spark應用程序?

額外的信息:

我的系統是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")

目前,沒有開箱即用的解決方案可以避免Yarn模式的spark-submit使用。

Spark-submit :要運行作業,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變量,后來Spark將Yarn客戶端私有化為spark包(〜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當它從調用launchBackend() https://開頭的github .com / apache / spark / blob / master / R / pkg / R / client.R並給出所有已設置的環境+參數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM