大数据之 Spark 编译打包
2019-01-16 本文已影响0人
etrols
hadoop 版本:hadoop-2.6.0-cdh5.9.3.tar.gz
第一步,打开 Spark 官网:https://spark.apache.org
第二步,点击 Download,如下图:

第三步,下载 Spark 源码,如下图:

第四步,编译源码
解压 Spark
tar -zxvf spark-2.4.0.tgz
进入 Spark 源码目录下
cd spark-2.4.0
首先使用 mvn 命令编译将 jar 包下载下来
mvn -Pyarn -Phadoop-2.6 -Phive -Phive-thriftserver -Dhadoop-version=hadoop-2.6.0-cdh5.9.3 -DskipTests clean package
命令参数解析
--tgz //打包成 tgz 格式
-Pyarn //使用 yarn Profile
-Phadoop-2.6 //使用 hadoop-2.6 Profile
-Phive //使用 hive-thriftserver Profile
-Phive-thriftserver //使用 hive-thriftserver Profile
-Dhadoop-version //指定 hadoop-version 版本信息
使用 mvn 之前需要安装 maven,这里不再赘述,当然使用 Spark 源码自带 maven 可以不安装
./build/mvn -Pyarn -Phadoop-2.6 -Phive -Phive-thriftserver -Dhadoop-version=hadoop-2.6.0-cdh5.9.3 -DskipTests clean package
见到如下图说明成功:

第五步,编译 tgz 包,可以跳过第四步
在 spark 源码目录执行 make-distribution 编译命令
./dev/make-distribution.sh --name cdh5.9.3 --tgz -Pyarn -Phadoop-2.6 -Phive -Phive-thriftserver -Dhadoop-version=hadoop-2.6.0-cdh5.9.3
命令参数解析
--name //表示打包的名称
见如下表明打包成功:

在 spark 源码目录下有 spark-2.4.0-bin-cdh5.9.3.tgz 生成,如下图:

可能程序的错误及解决方案
- [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.4.0: Could not find artifact org.apache.hadoop:hadoop-client:jar:2.6.0-cdh5.9.3 in nexus-aliyun (http://maven.aliyun.com/nexus/content/groups/public) -> [Help 1]
在 spark 源码目录下的 pom 文件添加 CDH maven 仓库
<repository>
<id>cloudera</id>
<url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
</repository>
如下图所示:

- 有时编译的机器内存不够,一般推荐4G以上的内存
添加以下环境变量
export MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m"
3.如果编译的是Scala版本是 2.10,需要在 spark 源码目录下先执行如下的脚本
./dev/change-scala-version.sh 2.10