spark-2.1.0-bin-2.6.0-cdh5.x源码编译

前置条件:

CentOS6.7
JDK1.7+
Maven 3.3.9
Spark2.1.0

1.到spark官网上下载spark2.1.0的源码


spark-2.1.0-bin-2.6.0-cdh5.x源码编译_第1张图片
spark-download.png

2.执行mkdir source新建目录,在此目录下通过wget下载源代码
wget https://archive.apache.org/dist/spark/spark-2.1.0/spark-2.1.0.tgz

3.在source目录下执行tar -zxvf spark-2.1.0.tgz解压tgz代码包。

4.设置Maven的使用内存,默认的maven内存可能不够用
export MAVEN_OPTS="-Xmx2g XX:ReservedCodeCacheSize=512m"

5.使用mvn编译

  • 由于HDFS不是协议兼容的,所以,编译Spark时候,需要指定特定的HDFS版本,


    spark-2.1.0-bin-2.6.0-cdh5.x源码编译_第2张图片
    image.png
  • 服务器上hadoop版本:

$ echo $HADOOP_HOME
/home/hadoop/app/hadoop-2.6.0-cdh5.7.0
  • 由于服务器上的hadoop版本是hadoop-2.6.0-cdh5.7.0,所以,对应的Profile:hadoop-2.6
    mvn命令如下:
    /build/mvn -Pyarn -Phadoop-2.6 -Dhadoop.version=hadoop-2.6.0-cdh5.7.0 -DskipTests clean package

  • 如果,需要编译Hive和JDBC支持的话,需要添加profile
    -Phive -Phive-thriftserver

  • 在spark解压的源码根目录下执行最终的mvn命令:
    /build/mvn -Pyarn -Phadoop-2.6 -Dhadoop.version=hadoop-2.6.0-cdh5.7.0 -Phive -Phive-thriftserver -DskipTests clean package

  • 初次编译Spark,需要下载很多依赖,因此编译时间随网速情况而定,1~2小时甚至更久

6.编译一个可以运行的tgz包(推荐使用),在spark代码解压的根目录下执行命令:

./dev/make-distribution.sh  \
--name 2.6.0-cdh5.7.0 \
--tgz \
-Pyarn -Phadoop-2.6 \
-Phive -Phive-thriftserver  \
-Dhadoop.version=hadoop-2.6.0-cdh5.7.0 

生成spark-2.1.0-bin-2.6.0-cdh5.7.0.tgz

7.Spark2.1.0默认支持的scala版本是2.11.8,如果想要使用2.10的话,编译前需要
./dev/change-scala-version.sh 2.10

  • 注意1:

[ERROR] Failed to execute goal on project spark-launcher_2.11: Could not resolve dependencies for project org.apache.spark:spark-launcher_2.11:jar:2.1.0: Could not find artifact org.apache.hadoop:hadoop-client:jar:hadoop-2.6.0-cdh5.7.0 in central (https://repo1.maven.org/maven2) -> [Help 1]

那么需要在pom.xml里面配置:


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

spark-2.1.0-bin-2.6.0-cdh5.x源码编译_第3张图片
pom仓库配置.png
  • 注意2:

was cached in the local repository,
resolution will not be reattemped until the update interval of nexus has
......

对策:

1.去仓库目录把 xxx.lastUpdated文件全部删除,重新执行maven命令
2.编译命令后面加上 -U

7.编译成功(VPN打开耗时45~46分钟):


spark-2.1.0-bin-2.6.0-cdh5.x源码编译_第4张图片
编译成功1.png
spark-2.1.0-bin-2.6.0-cdh5.x源码编译_第5张图片
编译成功2.png

8.在spark解压的源代码的根路径下可以看到编译成功的spark包,名称形如:

spark-2.1.0-bin-2.6.0-cdh5.7.0.tgz
(spark-spark版本号-bin-hadoop版本号-CDH社区版本号)

以上内容参考:http://spark.apache.org/docs/2.1.0/building-spark.html

你可能感兴趣的:(spark-2.1.0-bin-2.6.0-cdh5.x源码编译)