1、编译spark源码的前置要求
Maven 3.39 or newer
java 8+
scala
scala-2.11.12.tgz
git
2、编译
1、安装java配置环境变量
略
2、安装scala配置环境变量
export SCALA_HOME=/opt/apps/scala-2.12.4
export PATH=$PATH:$SCALA_HOME/bin
3、安装git
yum -y install git
4、安装maven配置环境变量
export MAVEN_HOME=/opt/apps/apache-maven-3.3.9
export PATH=$PATH:$MAVEN_HOME/bin
export MAVEN_OPTS="-Xms256m -Xmx1024m"
【5】、如果有需要,可以更改maven仓库位置,默认在${user.name}/.m2/repository/下
vi ${MAVEN_HOME}/conf/setting.xml
<localRepository>/home/hadoop/maven_repo</localRepository>
这个目录事先创建
【6】、如果编译使用的是cdh版本,则还要再pom.xml文件的
<repositories></repositories>中添加cdh仓库地址
<repository>
<id>cloudera</id>
<name>cloudera Repository</name>
<url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
</repository>
7、由于在编译过程中回去检验各种软件的版本等信息,耗费大量时间,故我们可以指定使用的软件的版本。(spark解压文件根目录执行)
vi dev/make-distribution.sh(在spark源码包解压目录下执行)
注销掉 VERSION=$() 这13行,添加以下内容
VERSION=2.3.1
SCALA_VERSION=2.12.4
SPARK_HADOOP_VERSION=2.8.1
SPARK_HIVE=1 #启用hive
8、设置maven内存
export MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m"
不设置可能报错如下:
[INFO] Compiling 203 Scala sources and 9 Java sources to
/Users/me/Development/spark/core/target/scala-2.12/classes...
[ERROR] Java heap space -> [Help 1]
9、在编译过程中如果本身虚拟机内存太小,导致无法自动给jvm分配足够的内存
会出现“Could not create the Java Virtual Machine”的报错,
我们可以手动指定jvm内存来避免这个报错。
vi /etc/environment,添加
export JAVA_OPTIONS="-Xms256m -Xmx512m -Xmn256m"
如果还不行,适当调大这个值
10、