spark1.2.0编译


 spark 有三种编译方式:SBT、MAVEN、make-distribution.sh。SBT、MAVEN两种方式打出来的包比较大,不适合部署使用。因此我们通常使用第三种方式打包。

./make-distribution.sh --tgz --skip-java-test --with-tachyon -Dyarn.version=2.2.0 -Dhadoop.version=2.2.0 -Djava.version=1.7 -Dprotobuf.version=2.5.0 -Pyarn -Phive -Phive-thriftserver

这条命令可以简化为:

./make-distribution.sh --tgz --skip-java-test --with-tachyon -Dhadoop.version=2.2.0 -Djava.version=1.7 -Dprotobuf.version=2.5.0 -Pyarn -Phive -Phive-thriftserver

因为yarn的版本用的是hadoop版本变量,即hadoop是什么版本,yarn就是什么版本。

1.使用这种方式不用单独修改maven配置,因为脚本里面会在编译之前执行这条命令

2.--tgz 生成部署包;

3.--skip-java-test 滤过测试阶段;

4.--with-tachyon 感觉tachyon是趋势,所以加上tachyon的支持;

5.-Dhadoop.version 指定hadoop的版本,默认为1.0.4;

6.-Djava.version 指定java版本,默认是1.6;

7.-Dprotobuf.version 指定protobuf的版本,默认是2.4.1;这里指定是因为hadoop使用的2.5.0,不修改的话搭配的时候会出问题;

8.-Pyarn -Phive -Pthriftserver 分别加入yarn、hive的支持。

在根目录下面生成了一个binary包


解压部署包后或者直接在编译过的目录,通过配置conf下的文件,就可以使用spark了


 关于编译的时候scala版本问题,我遇到过,它默认的是2.10.4,现在最新的2.11.x,如果不指定直接编译,外部编写scala程序的时候需要引用编译好的jar包,会产生scala版本冲突

但是如果编译的时候指定,就需要注意,如果指定过新的版本,比如

./make-distribution.sh --tgz --skip-java-test -Dyarn.version=2.2.0 -Dhadoop.version=2.2.0 -Pyarn -Phive -Phive-thriftserver -Dscala-2.11

编译的时候就会出现类似

我也去网上找了,assembly包最新更新到了scala2.10的版本,所以不会编译成功,除非自己再去编译assembly的jar包,比较麻烦

我采取的是降低自己的使用的scala版本,和spark保持一致,反正没什么区别


如果编译的时候指定了--with-tachyon,那么会在出现编译成功后任务不停止,继续下载tachyon的binary包,然后拆解加入即将生成的spark部署包中


欲为大树,何与草争;心若不动,风又奈何。
原文地址:https://www.cnblogs.com/admln/p/compileSpark1-2-0.html