1.spark的下载
打开网址spark.apache.org,点击download,选择想要下载的版本,我这里选择了最新的2.2.0版本
在choose a package type 中选择source code,获取spark2.2.0的下载镜像,即可完成下载。
(官网有时候版本切换会有问题,可以在download spark下方的signatures and checksums中选择想要的版本)
2.spark的编译
spark2.2.0的maven版本要求3.3.9以上,jdk要求8以上。scala最好选择2.11版本,内存要求2-8个G(重要)
编译这部分主要看官网,spark.apache.org
官网给了两种编译方式,个人喜欢打包的方式,因为打包完成后可以根据自己的需要去部署spark环境,所以也推荐打包编译方式
spark源码中提供了一个脚本,是根目录dev下的make-distribution,我们可以通过这个脚本对spark进行编译
命令是这样的:./dev/make-distribution.sh --name 2.6.0-cdh5.7.0 --tgz -Pyarn -Phadoop-2.6 -Phive -Phive-thriftserver -Dhadoop.version=2.6.0-cdh5.7.0
--name 是指定编译完成后的文件名的,用版本号即可,清晰明了,文件名的格式可以在make-distribution.sh源码中找到:spark-$VERSION-bin-$NAME.tgz
--tgz 就是说要打包成tgz格式
-P 对应的是pom.xml源码中的
-D 是用来更改版本的,我们更改hadoop的版本为2.6.0-cdh5.7.0,也能在pom.xml中找到
第一次编译时间会很慢,内存和网速够用的话1个小时也许就能编译完成,我第一次编译整整编译了一个通宵,这里有一个提高编译速度的小tip
我们看make-distribution.sh的源码,找到这部分
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 "
# Reset exit status to 0, otherwise the script stops here if the last grep finds nothing\
# because we use "set -o pipefail"
echo -n)
这部分是检测我们的环境变量以确定我们的spark,scala,hadoop和hive的版本,我们可以通过直接将我们的版本加上去来提速
VERSION = 2.2.0 #spark的版本为2.2.0
SCALA_VERSION = 2.11 #scala的版本为2.11
SPARK_HADOOP_VERSION = 2.6.0-cdh5.7.0 #hadoop的版本为2.6.0-cdh5.7.0
SPARK_HIVE = 1 #支持hive
最后我编译完成后的文件为spark2.2.0-bin-2.6.0-cdh5.7.0.tgz,我们就可以用这个包进行部署啦