clone 源码
git clone git://github.com/apache/spark.git
maven编译源码
国外镜像比较慢,此处修改maven仓库的镜像为阿里云镜像:
<mirrors> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors>
编译的时候内存设置大一点,以免内存溢出,导致编译失败,此处设置maven内存如下:
export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"
mvn -Pyarn -Phadoop-2.7 -Dhadoop.version=2.7.3 -DskipTests clean package
-Pyarn -Phadoop-2.7 -Dhadoop.version=2.7.3 参考下面的链接:
https://spark.apache.org/docs/latest/building-spark.html#specifying-the-hadoop-version
-D系统参数,-P profile定义
查看hadoop版本:./hadoop version 或者 ./hdfs version
测试编译
./bin/run-example SparkPi 10
结果如下则编译没问题:
spark在yarn集群上的运行
注:spark在yarn上运行时不需要启动spark集群的,因为,spark任务是在yarn集群上运行的
在yarn上运行spark应用程序有两种方式,第一种是 cluster模式,第二种是client模式,
区别是
cluster模式
Spark driver运行在yarn集群上,client模式Spark driver运行在客户端进程中。
使用
./bin/spark-submit向yarn集群提交spark应用,
$ ./bin/spark-submit --class path.to.your.Class --master yarn --deploy-mode cluster [options] <app jar> [app options]
--class:主类
--master:yarn指定在yarn上运行
--deploy-mode:部署模式cluster 指定为集群模式
app jar:应用程序打的jar包
应用实例:
./bin/spark-submit --class spark.examples.wordcount.WordCount --master yarn --deploy-mode cluster wordcount.jar README.md
注:运行前请确保yarn的安装时正确的,结果可以在日志文件里面看到
客户端模式如下:
./bin/spark-shell --master yarn --deploy-mode client
./bin/spark-shell --class spark.examples.wordcount.WordCount --master yarn --deploy-mode client --jars wordcount.jar README.md