yarn版本:hadoop2.7.0html
spark版本:spark1.4.0apache
0.前期環境準備:app
jdk 1.8.0_45maven
hadoop2.7.0oop
Apache Maven 3.3.3學習
1.編譯spark on yarnui
下載地址:http://mirrors.cnnic.cn/apache/spark/spark-1.4.1/spark-1.4.1.tgzspa
解壓後進入spark-1.4.1.net
執行以下命令,Setting up Maven’s Memory Usagecode
export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"
編譯spark,使其支持yarn
mvn -Pyarn -Phadoop-2.7 -Dhadoop.version=2.7.0 -DskipTests clean package
編譯會進行很長時間,期間maven會下載不少東西,還會輸出不少warning,通常warning不會有影響,編譯成功後會顯示build success。
3.添加環境變量
export HADOOP_HOME=your hadoop dir export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin export HADOOP_CONF_DIR=HADOOP_HOME/etc/hadoop export YARN_HOME=$HADOOP_HOME export YARN_CONF_DIR=HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_CONF_DIR
export SPARK_HOME=your spark dir
export PATH=$PATH:$SPARK_HOME/bin
4.執行例子程序,計算pi
向yarn提交任務執行程序的格式
$ ./bin/spark-submit --class path.to.your.Class --master yarn-cluster [options] <app jar> [app options】
所以執行計算pi的例子程序格式以下:
bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master yarn-cluster \ --num-executors 3 \ #執行任務的節點數 --driver-memory 4g \ --executor-memory 2g \ --executor-cores 1 \ examples/target/spark-examples_2.10-1.4.0.jar 10
例子程序在examples/target下,選擇class爲org.apache.spark.examples.SparkPi即爲計算pi的類
提交成功後能夠查看http://localhost:8088查看yarn的管理界面,查看對應任務後的tracking UI便可查看spark的管理界面
任務成功結束後能夠在對應的log的stdout下看到計算的最後pi的結果,例如個人電腦上地址爲:
http://mmc:8088/logs/userlogs/application_1436998397621_0011/container_1436998397621_0011_01_000001/stdout
致謝:http://spark.apache.org/docs/latest/running-on-yarn.html #官方文檔
http://spark.apache.org/docs/latest/building-spark.html#building-a-runnable-distributio #官方文檔
http://database.51cto.com/art/201404/435669.htm
http://blog.csdn.net/jiushuai/article/details/26693569
http://sofar.blog.51cto.com/353572/1352713
5.小結:若是網上資料太少,官方文檔最重要,雖然看官方文檔真的很頭疼,網上資料不少,可是有的帖子比較老,spark的最新版本的解決方法跟網上的帖子仍是有些差異,版本方面必定要看清楚,不然
他的成功了,你的不必定成功,若是出錯必定學會看log,一行一行的看下來你會收穫不少。
要善於總結別人的帖子,不要一味的找到一個就開幹,否則最後錯了去查錯都不知道本身哪些操做致使的,會影響進度
spark感受很麻煩,做爲一個新手要好好學習