복붙노트

[HADOOP] Spark 어플리케이션에 Yarn 클러스터 구성 추가

HADOOP

Spark 어플리케이션에 Yarn 클러스터 구성 추가

spark-submit을 직접 사용하는 대신 scala sbt 응용 프로그램에서 원사에 spark를 사용하려고합니다.

원격 원사 클러스터가 이미 실행 중이고 SparkR에서 spark 작업을 실행하는 원사 클러스터에 연결할 수 있습니다. 그러나 스칼라 어플리케이션에서 비슷한 일을하려고 할 때 환경 변수를 실 구성에로드 할 수없고 대신 기본 실 주소와 포트를 사용할 수 있습니다.

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

해결법

  1. ==============================

    1.요즘에는 원사 모드의 스파크 제출 사용을 피하기위한 기본 솔루션이 없습니다.

    요즘에는 원사 모드의 스파크 제출 사용을 피하기위한 기본 솔루션이 없습니다.

    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

    그래도 무슨 해결책이야?

  2. from https://stackoverflow.com/questions/33728640/add-yarn-cluster-configuration-to-spark-application by cc-by-sa and MIT license