spark源码编译成功案例, 版本,修改点

1.spark的下载

打开网址spark.apache.org,点击download,选择想要下载的版本,我这里选择了最新的2.2.0版本

在choose a package type 中选择source code,获取spark2.2.0的下载镜像,即可完成下载。

(官网有时候版本切换会有问题,可以在download spark下方的signatures and checksums中选择想要的版本)

2.spark的编译

spark2.2.0的maven版本要求3.3.9以上,jdk要求8以上。scala最好选择2.11版本,内存要求2-8个G(重要)


编译这部分主要看官网,spark.apache.org

官网给了两种编译方式,个人喜欢打包的方式,因为打包完成后可以根据自己的需要去部署spark环境,所以也推荐打包编译方式

spark源码中提供了一个脚本,是根目录dev下的make-distribution,我们可以通过这个脚本对spark进行编译

命令是这样的:./dev/make-distribution.sh --name 2.6.0-cdh5.7.0 --tgz  -Pyarn -Phadoop-2.6 -Phive -Phive-thriftserver -Dhadoop.version=2.6.0-cdh5.7.0

--name 是指定编译完成后的文件名的,用版本号即可,清晰明了,文件名的格式可以在make-distribution.sh源码中找到:spark-$VERSION-bin-$NAME.tgz

--tgz 就是说要打包成tgz格式 

-P 对应的是pom.xml源码中的,根据需要进行选择

-D 是用来更改版本的,我们更改hadoop的版本为2.6.0-cdh5.7.0,也能在pom.xml中找到

第一次编译时间会很慢,内存和网速够用的话1个小时也许就能编译完成,我第一次编译整整编译了一个通宵,这里有一个提高编译速度的小tip

我们看make-distribution.sh的源码,找到这部分

VERSION=$("$MVN" help:evaluate -Dexpression=project.version $@ 2>/dev/null | grep -v "INFO" | tail -n 1)
SCALA_VERSION=$("$MVN" help:evaluate -Dexpression=scala.binary.version $@ 2>/dev/null\
    | grep -v "INFO"\
    | tail -n 1)
SPARK_HADOOP_VERSION=$("$MVN" help:evaluate -Dexpression=hadoop.version $@ 2>/dev/null\
    | grep -v "INFO"\
    | tail -n 1)
SPARK_HIVE=$("$MVN" help:evaluate -Dexpression=project.activeProfiles -pl sql/hive $@ 2>/dev/null\
    | grep -v "INFO"\
    | fgrep --count "hive";\
    # Reset exit status to 0, otherwise the script stops here if the last grep finds nothing\
    # because we use "set -o pipefail"
    echo -n)

这部分是检测我们的环境变量以确定我们的spark,scala,hadoop和hive的版本,我们可以通过直接将我们的版本加上去来提速

VERSION = 2.2.0 #spark的版本为2.2.0

SCALA_VERSION = 2.11 #scala的版本为2.11

SPARK_HADOOP_VERSION = 2.6.0-cdh5.7.0 #hadoop的版本为2.6.0-cdh5.7.0

SPARK_HIVE = 1 #支持hive

最后我编译完成后的文件为spark2.2.0-bin-2.6.0-cdh5.7.0.tgz,我们就可以用这个包进行部署啦
--------------------- 
作者:BornZhu 
来源:CSDN 
原文:https://blog.csdn.net/BornZhu/article/details/78542620 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

 

===============================================================

 

前期准备

maven3.3.9+安装

jdk1.7+jdk安装

scala安装

下载

http://spark.apache.org/downloads.html

这里是下载源码,根据我们生成的环境自己编译

官网编译源码介绍

创建目录

mkdir /app/spark

cd /app/spark

解压

tar -zxvf spark-2.2.0.tgz

 

使用dev中的make-distribution.sh命令编译

cd /app/spark/spark-2.2.0

 ./dev/make-distribution.sh --name 2.9.0 --tgz -Psparkr -Phadoop-2.9 -Phive -Phive-thriftserver -Pmesos -Pyarn -Dhaoop.version=2.9.0

参数介绍

-Dhaoop.version=2.9.0

--name    编译后spark安装包的名字

--tgz    以tgz方式压缩

-Psparkr    编译出来的spark支持R语言

-Phive    编译出来的spark支持对hive的操作

 -Phive-thriftserver    编译出来的spark支持对hive的操作

-Pmesos    编译出来的spark支持在mesos运行

-Pyarn    编译出来的spark支持在yarn运行

编译成功

生成的包就在spark源码的根目录下

生成的名称可能不一样。

先要安装scala

解压

tar -zxvf spark-2.2.0-bin-2.9.0.tgz

移动

mv spark-2.2.0-bin-2.9.0 /app/spark

配置环境变量

vi ~/.bashrc

export SPARK_HOME=/app/spark/spark-2.2.0-bin-2.9.0
export PATH=:$PATH:$SPARK_HOME/bin

使配置立刻生效

source ~/.bashrc

进入目录

cd /app/spark/spark-2.2.0-bin-2.9.0/bin

检验是否安装成功

./spark-shell --version

 ./spark-shell --master local[2]

图形用户界面

http://node1:4040/jobs/
--------------------- 
作者:jy02268879 
来源:CSDN 
原文:https://blog.csdn.net/jy02268879/article/details/81009217 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

 

=========================================================

 

这几天在学习Spark,考虑到以后会涉及到修改源码,就干脆重源码编译开始学习了,不料编译过程中遇到了各种奇奇怪怪的坑,网上也没找到解决方案,所幸最后在错误日志的帮助下成功解决,这里做个记录,方便自己查看,也希望能帮到有需要的伙伴,第一次写博客,有写得不合理或者不对的地方,欢迎大家批评指正。

注意:很抱歉,未对该编译方法打的包进行测试就发了博文,最后测试该方法打的包是不能正常运行的,但没删该博文的原因在于,这算是一种解决问题的思路吧。另外在文章末尾新增编译成功且运行正常的编译方法. 

废话不多说,直接进入正题 
一、环境准备 
1) JDK 1.8+ 
2) Maven 3.3.9+ 
3) Scala 2.10 /Scala 2.11.8 
4) 下载解压Spark-2.2.0源码并 
vim ./dev/make-distribution.sh 


二、编译 
1)根据你本地的Scala版本: ./dev/change-scala-version.sh 2.10 或者 ./dev/change-scala-version.sh 2.11 
2)./dev/make-distribution.sh –name 2.6.0-cdh5.7.0 –tgz -Pyarn -Phadoop-2.6 -Dhadoop.version=2.6.0-cdh5.7.0 -Phive -Phive-thriftserver

三、可能遇到的坑及解决办法 
 
解决步骤1: 
按错误提示,加-rf :spark-hive-thriftserver_2.10从失败的地方重试,加-X显示详细错误信息 
./dev/make-distribution.sh –name 2.6.0-cdh5.7.0 –tgz -Pyarn -Phadoop-2.6 -Dhadoop.version=2.6.0-cdh5.7.0 -Phive -Phive-thriftserver -rf :spark-hive-thriftserver_2.10 -X 

解决步骤2: 
1) cd 解压后的spark-2.2.0源码根目录 
2) vim pom.xml 
3) vim 命令搜索jetty 
 
4)查找jetty版本 
 


5)将jetty-servlet和jetty-server依赖新增到报错提示的/opt/package/spark-2.2.0/sql/hive-thriftserver模块下的pom文件,版本直接写上 
cd /opt/package/spark-2.2.0/sql/hive-thriftserver 


6)重新从失败的地方编译 
./dev/make-distribution.sh –name 2.6.0-cdh5.7.0 –tgz -Pyarn -Phadoop-2.6 -Dhadoop.version=2.6.0-cdh5.7.0 -Phive -Phive-thriftserver -rf :spark-hive-thriftserver_2.10 -X 


OK,一波三折,总算成功了 
总结一下:遇到错误不要怕,首先百度,百度不到谷歌,谷歌不到自己再看看日志,源码之下无秘密,只要思想不滑坡,办法总比困难多,坑是踩不完的,当你是第一个踩坑的人时,更应该静下来分析问题、解决问题。

该方法打的包运行报错: 


显然,上面的方法虽然编译成功了,但是最终的包是不能用的,最后附上编译成功且能用的编译组合

一、环境准备 
1) JDK 1.8u152 
2) Maven 3.5.2 
3)Scala 2.11.8 
4) 下载解压Spark-2.2.0源码并 
vim ./dev/make-distribution.sh 
 
5)添加cloudera的maven仓库: 



    cloudera
    https://repository.cloudera.com/artifactory/cloudera-repos/

1
2
3
4
二、编译 
1) ./dev/change-scala-version.sh 2.11 
2)

./dev/make-distribution.sh \
--name 2.6.0-cdh5.7.0 \
--tgz \
-Pyarn \
-Phadoop-2.6 \
-Dhadoop.version=2.6.0-cdh5.7.0 \
-Phive \
-Phive-thriftserver
1
2
3
4
5
6
7
8
运行成功: 

--------------------- 
作者:琪琪qiqi_77 
来源:CSDN 
原文:https://blog.csdn.net/suisongtiao1799/article/details/80223068 
版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(Spark)