作者 | 敏叔V587
责编 | 徐威龙
封图| CSDN 下载于视觉中国
Spark3.0已经发布有一阵子了,官方发布了预览版,带来了一大波更新,对于我们程序员来说,首先当然是代码拉过来,打个包,跑起来!!
源码地址
Spark源码是托管在github上面的,源码地址:
Spark官方源码https://github.com/apache/spark
不过clone下了还是老费劲,不得琢磨琢磨微软收购github之后这个中国的网速问题不知道他们怎么看,我在gitee上面直接也fork一份源码,再进行clone。
gitee上Spark源码 :
https://gitee.com/CodeGarden2019/spark
编译和打包
作为一个过(被)来(虐)人,编译之前需要做点工作,后续就顺利很多。
直接编译会出现下面的错误:
......
exec: curl --silent --show-error -L https://downloads.lightbend.com/zinc/0.3.15/zinc-0.3.15.tgz
curl: (77) error setting certificate verify locations:
......
exec: curl --silent --show-error -L https://downloads.lightbend.com/scala/2.12.10/scala-2.12.10.tgz
......
/home/hdfs/Spark3./build/mvn: line130: cd: /home/hdfs/Spark3./build/scala-2.12.10/bin/../lib: No suchfileordirectory
/home/hdfs/Spark3./build/mvn: line131: cd: /home/hdfs/Spark3./build/scala-2.12.10/bin/../lib: No suchfileordirectory
exec: curl --silent --show-error -L https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
......
/home/hdfs/Spark3./build/mvn: line148: /home/hdfs/Spark3./build/zinc-0.3.15/bin/zinc: No suchfileordirectory
......
接下来我们执行:
/dev/make-distribution.sh--name spark-3.0 --tgz -Phadoop-2.6 -Phive -Phive-thriftserver -Pyarn -DskipTests
脚本是不报错了,但是一直卡着
我们找到脚本,129行开始的地方:
VERSION=$("$MVN"help:evaluate -Dexpression=project.version$@\
| grep -v"INFO"\
| grep -v"WARNING"\
| tail -n 1)
SCALA_VERSION=$("$MVN"help:evaluate -Dexpression=scala.binary.version$@\
| grep -v"INFO"\
| grep -v"WARNING"\
| tail -n 1)
SPARK_HADOOP_VERSION=$("$MVN"help:evaluate -Dexpression=hadoop.version$@\
| grep -v"INFO"\
| grep -v"WARNING"\
| tail -n 1)
SPARK_HIVE=$("$MVN"help:evaluate -Dexpression=project.activeProfiles -pl sql/hive$@\
| 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)
这个地方是获获取各个组件的版本,其实版本从maven的pom.xml中可以看到,我直接写成固定的就行,改成如下:
VERSION=3.1.-SNAPSHOT
SCALA_VERSION=2.12
SPARK_HADOOP_VERSION=2.7.4
SPARK_HIVE=3.2
另外,我们为了执行下载的时候速度快些,我们把maven的仓库地址换掉:
alimaven
aliyun maven
http://maven.aliyun.com/nexus/content/groups/public/
central
再次编译,可以动了:
接下来就是等待了,编译完成之后会就可以看到我们的包了
一些编译过程中的小问题
FullGC的问题
编译这个工作需要多试几次,编译的时候我发现还有本身maven慢的问题
[hdfs@daas-service-01~]$ jps -ml
78904org.codehaus.plexus.classworlds.launcher.Launcher -DzincPort=3030clean package -DskipTests -Phadoop-2.6-Phive -Phive-thriftserver -Pyarn -DskipTests
[hdfs@daas-service-01~]$ jstat -gcutil789041000
SS1 E O M CCS YGC YGCT FGC FGCT GCT
71.26.0021.629.5391.0595.86804.02172.0646.085
71.26.0034.029.5391.0595.86804.02172.0646.085
71.26.0043.849.5391.0595.86804.02172.0646.085
71.26.0055.639.5391.0595.86804.02172.0646.085
71.26.0073.309.5391.0595.86804.02172.0646.085
71.26.0087.289.5391.0595.86804.02172.0646.085
.0077.583.999.5391.0695.69814.09072.0646.154
.0077.5811.909.5391.0695.69814.09072.0646.154
针对这种现象,我们适度调整JVM的参数:
exportMAVEN_OPTS="-Xms12g -Xmx12g -XX:+UseG1GC"
[INFO] Compiling 10 Scala sources to /home/hdfs/Spark3.0/mllib-local/target/scala-2.12/test-classes ...
Java HotSpot(TM) 64-Bit Server VM warning: CodeCache is full. Compiler has been disabled.
Java HotSpot(TM) 64-Bit Server VM warning: Try increasing the codecachesizeusing-XX:ReservedCodeCacheSize=
CodeCache:size=245760Kb used=243977Kb max_used=243996Kb free=1782Kb
bounds [0x00002aae10000000,0x00002aae1f000000,0x00002aae1f000000]
total_blobs=59407nmethods=58763adapters=539
compilation: disabled (notenough contiguous freespaceleft)
这个其实就是代码缓冲区满了,按照提示我们可以适度加大这个数值,几个参数一起配合就是:
exportMAVEN_OPTS="-Xms12g -Xmx12g -XX:+UseG1GC -XX:ReservedCodeCacheSize=2g"
感兴趣的朋友可以跟着试试,有什么问题,可以在评论区留言告诉我哦~
注:本文转自「CSDN博客」
https://blog.csdn.net/zhuxuemin1991/article/details/105161234
【End】