我的集群环境:CDH版本是5.14.0这个版本
但由于spark对应的5.14.0的CDH版本的软件spark的版本还停留在spark1.x,并且CDH版本的spark不支持sparkSQL的功能
原因: 因为Cloudera公司认为有了impala就不需要再使用sparkSQL的功能了,同时也是为了推广impala,所以直接阉割掉了sparkSQL的模块。
解决: 使用Apache的版本的spark来进行重新编译
spark编译官方文档说明
http://spark.apache.org/docs/latest/building-spark.html#specifying-the-hadoop-version
1.下载spark的源码
spark2.2.0这个apache的版本,然后重新编译,对应的CDH5.14.0的版本
官方下载地址:https://archive.apache.org/dist/spark/spark-2.2.0/spark-2.2.0.tgz
2.准备linux环境,安装必须软件
1、linux安装maven-3.3.9及其以上版本
maven使用3.3.9以上的版本进行编译
配置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
2、linux安装jdk1.8.141
cd /explort/software
tar -zxvf jdk1.8.141.tar.gz ../servers
3.解压spark源码,修改配置,准备编译
1、上传源码压缩包并解压
将spark的源码,上传到/export/softwares路径下面去
解压源码到/export/servers路径下面去
cd /export/softwares/
tar -zxf spark-2.2.0.tgz -C /export/servers/
2、修改源码配置文件
修改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>
</font>
4.开始编译
修改完成以上所有配置之后,执行以下命令准备开始编译
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