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感受很麻烦,做为一个新手要好好学习