spark編譯與onyarn的執行

版權聲明:本文爲博主原創文章。未經博主贊成不得轉載。

https://blog.csdn.net/u014393917/article/details/24640715 css

Spark on yarn執行流程源碼分析

眼下的分析主要基於spark0.9.0cdh5的版本號進行分析,html

源碼下載地址:https://github.com/cloudera/spark.gitjava

下載方式:gitclone url ./sparkgit

進入spark文件夾。執行gitcheckout cdh5-0.9.0_5.0.0github



源碼編譯

使用sbt編譯sparkapache

執行sbt命令需要使用http代理。否則鏈接不上網絡。進入sbt/文件夾,使用vimsbt改動裏面的內容,vim

在最如下java命令的第二行加入-Dhttp.proxyHost=myserver-Dhttp.proxyPort=port \網絡

執行例如如下命令編譯sparkapp

SPARK_HADOOP_VERSION=2.3.0-cdh5.0.0SPARK_YARN=true sbt/sbt assembly分佈式

SPARK_HADOOP_VERSION後是hadoop的版本號號,


SPARK_HADOOP_VERSION=2.2.0sbt/sbt assembly

Inaddition, if you wish to run Spark on YARN,set SPARK_YARN to true:

SPARK_HADOOP_VERSION=2.0.5-alphaSPARK_YARN=true sbt/sbt assembly

http鏈接代理設置:

編輯spark_home/sbt/sbt文件,在文件最後的例如如下腳本部分:

printf"Launching sbt from ${JAR}\n"

java\

-Xmx1200m-XX:MaxPermSize=350m -XX:ReservedCodeCacheSize=256m \

-jar${JAR} \

"$@"

改動爲

printf"Launching sbt from ${JAR}\n"

java\

-Dhttp.proxyHost=myserver-Dhttp.proxyPort=port \

-Xmx1200m-XX:MaxPermSize=350m -XX:ReservedCodeCacheSize=256m \

-jar${JAR} \

"$@"


經過例如如下命令經過sbtspark進行編譯

SPARK_HADOOP_VERSION=2.3.0-cdh5.0.0SPARK_YARN=true sbt/sbt assembly


sbt命令請參考http://www.scala-sbt.org/release/docs/Getting-Started/Running.html#common-commands


生成tar

spark_home的根文件夾下,執行例如如下命令,編譯spark的分佈式部署tar.gz

改動make-distribution.sh文件,

在例如如下命令後

Makedirectories

rm-rf "$DISTDIR"

mkdir-p "$DISTDIR/jars"

echo"Spark $VERSION built for Hadoop $SPARK_HADOOP_VERSION" >"$DISTDIR/RELEASE"



#Copy jars

cp$FWDIR/assembly/target/scala*/*assembly*hadoop*.jar "$DISTDIR/jars/"

加入此信息,把examples加入到tar.gz包中(測試過程可以執行此操做,把演示樣例的代碼一塊兒打包起來)

#Make directories

mkdir-p "$DISTDIR/examples"



#Copy jars

cp$FWDIR/examples/target/scala*/*examples*assembly*.jar"$DISTDIR/examples/"


./make-distribution.sh--hadoop 2.3.0-cdh5.0.0--with-yarn --tgz

命令執行完畢後,在spark_home下會生成一個tar.gz包。spark-0.9.0-hadoop_2.3.0-cdh5.0.0-bin.tar.gz


經過Yarn執行spark演示樣例程序

經過export命令設置yarnconf環境變量,假設沒有配置全局的yarnconf環境變量


exportYARN_CONF_DIR=/home/hadoop/test.spark.yang/hadoop-2.0.0-cdh4.3.0/etc/hadoop

exportSPARK_JAR=<spark_home>/jars/spark-assembly-0.9.0-incubating-hadoop2.0.0-cdh4.3.0.jar

exportYARN_CONF_DIR=/home/hadoop/test.spark.yang/hadoop-2.0.0-cdh4.3.0/etc/hadoop

exportHADOOP_CONF_DIR=/home/hadoop/test.spark.yang/hadoop-2.0.0-cdh4.3.0/etc/hadoop

SPARK_JAR=/home/hadoop/test.spark.yang/spark-0.9.0-incubating/jars/spark-assembly-0.9.0-incubating-hadoop2.0.0-cdh4.3.0.jar



./bin/spark-classorg.apache.spark.deploy.yarn.Client \

--jar./examples/spark-examples-assembly-0.9.0-incubating.jar \

--classorg.apache.spark.examples.SparkTC \

--argsyarn-standalone \

--num-workers3 \

--worker-cores1 \

--master-memory512M \

--worker-memory1g



經過java程序執行sparkon yarn的啓動

1.編寫一個java應用程序,core-site/hdfs-site/yarn-site的配置文件加入到project中。

2.sparkjar加入到project中。做用於當前project的class引用,

3.在project中環境變量設置SPARK_JAR,來引用sparkjar的位置,

4.在project中環境變量設置SPARK_LOG4J_CONF,來引用sparklog4j的位置

經過SPARK_YARN_USER_ENV配置其餘用戶定義的環境變量值。

經過SPARK_USE_CONC_INCR_GC配置是否使用默認的GC配置。,true/false

經過SPARK_JAVA_OPTS配置spark執行時的相關JAVA_OPTS.

經過JAVA_HOME配置java_home.

5.設置一些系統屬性,共spark執行時的使用,固然這些個系統屬性自己也有默認的值

a.屬性名稱QUEUE。默認值default。做用於am啓動的隊列名稱,也可以在client調用進傳入

b.屬性名稱spark.yarn.report.interval,默認值1000app執行監控的間隔時間ms

c.屬性名稱spark.yarn.submit.file.replication,默認值3。上傳給yarn上執行的資源的複製份數,包含sparkjar,appjar

d.屬性名稱spark.yarn.max.worker.failures,默認值3numworker傳入參數的值*2取最大值。

做用於app失敗的重試次數,假設重試次數超過了指定的值。表示app執行失敗。

e.屬性名稱spark.yarn.applicationMaster.waitTries,默認值10

等待SparkContext初始化完畢的等待次數,

每次的等待時。讓ApplicationMaster.sparkContextRef.wait=10000ms

f.屬性名稱spark.yarn.scheduler.heartbeat.interval-ms,默認值5000

經過此配置向RM設置am向其報告的時間間隔。

相關文章
相關標籤/搜索