个人开发环境中大数据所有软件版本都是基于CDH5.15.1版本安装,
但是CDH版本spark还停留在1.x版本,并且CDH版本的spark不支持sparkSQL的功能。
我们可以使用Apache版本的spark版本进行重新编译满足 CDH版本的spark。
spark:spark2.4.4
maven:3.6.2
java:jdk8
cdh版本:5.15.1
The Maven-based build is the build of reference for Apache Spark. Building Spark using Maven requires Maven 3.5.4 and Java 8. Note that support for Java 7 was removed as of Spark 2.2.0.
即 使用maven编译spark源码必须保证maven是3.5.4以及java 8 环境
在2.2.0版本开始,移除java7的方式进行编辑。
个人使用maven3.6.2也能正常编译,所以个人觉得官网的内容可以理解为需要 maven版本3.5.4及以上,java版本需要jdk8及以上。
https://spark.apache.org/downloads.html
下载的时候选择:Source Code
下载命令(2.4.4版本源码)
wget http://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-2.4.4/spark-2.4.4.tgz
tar -zxvf spark-2.4.4.tgz -C ~/software/
(1)修改pom.xml
[wangyichao@bigdata spark-2.4.4]$ cd ~/software/spark-2.4.4/
[wangyichao@bigdata spark-2.4.4]$ vim pom.xml
在pom文件中找到maven 仓库地址配置,将默认的仓库,修改为
maven-ali
http://maven.aliyun.com/nexus/content/groups/public/
true
true
always
fail
cloudera
https://repository.cloudera.com/artifactory/cloudera-repos/
修改后的内容如图
(2)修改 dev/make-distribution.sh
[wangyichao@bigdata spark-2.4.4]$ vim dev/make-distribution.sh
注释掉以下内容:
VERSION=$("$MVN" help:evaluate -Dexpression=project.version $@ 2>/dev/null\
| grep -v "INFO"\
| grep -v "WARNING"\
| tail -n 1)
SCALA_VERSION=$("$MVN" help:evaluate -Dexpression=scala.binary.version $@ 2>/dev/null\
| grep -v "INFO"\
| grep -v "WARNING"\
| tail -n 1)
SPARK_HADOOP_VERSION=$("$MVN" help:evaluate -Dexpression=hadoop.version $@ 2>/dev/null\
| grep -v "INFO"\
| grep -v "WARNING"\
| tail -n 1)
SPARK_HIVE=$("$MVN" help:evaluate -Dexpression=project.activeProfiles -pl sql/hive $@ 2>/dev/null \
| grep -v "INFO"\
| grep -v "WARNING"\
| 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)
VERSION=2.4.4
SCALA_VERSION=2.11
SPARK_HADOOP_VERSION=2.6.0-cdh5.15.1
SPARK_HIVE=1
spark的版本
使用的scala版本
使用什么版本hadoop进行打包编译
是否使用hive
spark官方提供的命令demo:
./dev/make-distribution.sh --name custom-spark --pip --r --tgz -Psparkr -Phadoop-2.7 -Phive -Phive-thriftserver -Pmesos -Pyarn -Pkubernetes
我们可以根据个人需求进行一定的修改,安装我们个人使用过程中所需要的部分,例如个人知识需要hive、yarn、k8s部分
./dev/make-distribution.sh \
--name 2.4.4-cdh5.15.1 \
--tgz -Dhadoop.version=2.6.0-cdh5.15.1 \
-Phadoop-2.6 \
-Phive \
-Phive-thriftserver \
-Pyarn -Pkubernetes
4.等到安装完成
打包编译成功后,会在当前文件生成一个tgz包(spark-2.4.4-bin-2.4.4-cdh5.15.1.tgz),后续就可以根据该tgz包进行spark环境的部署
1.执行脚本make-distribution.sh
三个较为关键的变量:
在spark官方文档中描述:
对maven的jvm参数进行调整,避免JVM内存溢出
将下面的这个参数配置到环境变量中
export MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m"
我们在使用脚本编译时候,并没有人为的设定maven的jvm参数,原因就是因为在执行脚本中,我们可以看到脚本中已经通过MAVEN_OPTS 这个变量对maven的jvm内存进行了调整,并且执行脚本归根到底也是在使用maven命令进行安装。
安装完成后会生成一个 spark-$VERSION-bin-$NAME 命名的包,这个也可以验证了我们文件夹中生成的spark-2.4.4-bin-2.4.4-cdh5.15.1.tgz tgz包。
在pom文件中,我们可以看到如下内容
hadoop-2.6
hadoop-2.7
2.7.3
2.7.1
2.6版本的hadoop,官方没有指定hadoop版本,编译命令需要添加:-Dhadoop.version=hadoop-2.6.0-cdh5.15.1