https://blog.csdn.net/u014393917/article/details/24640715 css
眼下的分析主要基於spark0.9.0的cdh5的版本號進行分析,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} \
"$@"
經過例如如下命令經過sbt對spark進行編譯
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
在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
經過export命令設置yarn的conf環境變量,假設沒有配置全局的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
1.編寫一個java應用程序,把core-site/hdfs-site/yarn-site的配置文件加入到project中。
2.把spark的jar加入到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,默認值1000。app執行監控的間隔時間ms。
c.屬性名稱spark.yarn.submit.file.replication,默認值3。上傳給yarn上執行的資源的複製份數,包含sparkjar,appjar
d.屬性名稱spark.yarn.max.worker.failures,默認值3或numworker傳入參數的值*2取最大值。
做用於app失敗的重試次數,假設重試次數超過了指定的值。表示app執行失敗。
e.屬性名稱spark.yarn.applicationMaster.waitTries,默認值10。
等待SparkContext初始化完畢的等待次數,
每次的等待時。讓ApplicationMaster.sparkContextRef.wait=10000ms
f.屬性名稱spark.yarn.scheduler.heartbeat.interval-ms,默認值5000,
經過此配置向RM設置am向其報告的時間間隔。