spark编译
为什么要对spark进行重新编译?
由于我们所有的环境统一使用CDH的软件版本,并且对应的CDH版本是5.14.0这个版本,所以我们也直接下载使用对应的spark5.14.0版本即可。但是由于spark对应的5.14.0的CDH版本的软件spark的版本还停留在spark1.x,并且CDH版本的spark不支持sparkSQL的功能(sparkSQL模块被阉割掉了),因为Cloudera公司认为有了impala就不需要再使用sparkSQL的功能了,同时也是为了推广impala,所以直接阉割掉了sparkSQL的模块。我们可以使用Apache的版本的spark来进行重新编译,使其对应我们的CDH5.14.0的版本,并且将sparkSQL也能够支持
spark编译官方文档说明
http://spark.apache.org/docs/latest/building-spark.html#specifying-the-hadoop-version
由于下载jar包太慢,如果需要自己编译,尽量使用资料当中配套的maven仓库
第一步:下载spark的源码
我们这里选用spark2.2.0这个apache的版本,然后重新编译,以对应我们的CDH5.14.0的版本
https://archive.apache.org/dist/spark/spark-2.2.0/spark-2.2.0.tgz
第二步:准备linux环境,安装必须软件
linux安装maven-3.3.9及其以上版本
maven必须使用3.3.9以上的版本进行编译,我们这里选择使用3.5.0的版本
记得使用资料当中的maven仓库来进行编译
配置settings.xml
<localRepository>/export/servers/mvnrepository</localRepository>
配置maven环境变量
export MAVEN_HOME=/export/servers/apache-maven-3.5.0 export MAVEN_OPTS="-Xms4096m -Xmx4096m" export PATH=:$MAVEN_HOME/bin:$PATH
linux安装jdk1.8.141
略.
第三步:解压spark源码,修改配置,准备编译
上传源码压缩包并解压
将spark的源码,上传到/export/softwares路径下面去
解压源码到/export/servers路径下面去
cd /export/softwares/ tar -zxf spark-2.2.0.tgz -C /export/servers/
修改源码配置文件
修改make-distribution.sh这个脚本
cd /export/servers/spark-2.2.0/dev vim make-distribution.sh
在第三行添加以下内容
VERSION=2.2.0 SCALA_VERSION=2.11.8 SPARK_HADOOP_VERSION=2.6.0-cdh5.14.0 SPARK_HIVE=1
注释掉以下这些内容
#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 "<id>hive</id>";\ # Reset exit status to 0, otherwise the script stops here if the last grep finds nothing\ # because we use "set -o pipefail" # echo -n)
添加maven编译库
修改pom.xml
cd /export/servers/spark-2.2.0 vim pom.xml
修改hadoop,flume以及zookeeper的版本
<hadoop.version>2.6.0-cdh5.14.0</hadoop.version> <flume.version>1.6.0-cdh5.14.0</flume.version> <zookeeper.version>3.4.5-cdh5.14.0</zookeeper.version>
添加CDH以及阿里云的仓库地址
<repository> <id>cloudera</id> <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url> </repository>
<repository> <id>aliyun</id> <name>aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <layout>default</layout> <releases> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </snapshots> </repository>
添加pluginRepository
<pluginRepository> <id>cloudera</id> <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url> </pluginRepository>
第四步:开始编译
修改完成以上所有配置之后,执行以下命令准备开始编译
cd /export/servers/spark-2.2.0/ export MAVEN_OPTS="-Xmx4g -XX:ReservedCodeCacheSize=1024m" ./dev/make-distribution.sh --name 2.6.0-cdh5.14.0 --tgz -Pyarn -Phadoop-2.6 -Phive -Phive-thriftserver -Dhadoop.version=2.6.0-cdh5.14.0 -DskipTests