快捷搜索:  汽车  科技

spark代码实战(Spark3.0发布了)

spark代码实战(Spark3.0发布了)gitee上Spark源码 :不过clone下了还是老费劲,不得琢磨琢磨微软收购github之后这个中国的网速问题不知道他们怎么看,我在gitee上面直接也fork一份源码,再进行clone。源码地址Spark源码是托管在github上面的,源码地址:Spark官方源码 https://github.com/apache/spark

spark代码实战(Spark3.0发布了)(1)

作者 | 敏叔V587

责编 | 徐威龙

封图| CSDN 下载于视觉中国

Spark3.0已经发布有一阵子了,官方发布了预览版,带来了一大波更新,对于我们程序员来说,首先当然是代码拉过来,打个包,跑起来!!

spark代码实战(Spark3.0发布了)(2)

源码地址

Spark源码是托管在github上面的,源码地址:

Spark官方源码 https://github.com/apache/spark

不过clone下了还是老费劲,不得琢磨琢磨微软收购github之后这个中国的网速问题不知道他们怎么看,我在gitee上面直接也fork一份源码,再进行clone。

gitee上Spark源码 :

https://gitee.com/CodeGarden2019/spark

spark代码实战(Spark3.0发布了)(3)

编译和打包

作为一个过(被)来(虐)人,编译之前需要做点工作,后续就顺利很多。

直接编译会出现下面的错误:

......

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.0/build/mvn: line 130: cd: /home/hdfs/Spark3.0/build/scala-2.12.10/bin/../lib: No such file or directory

/home/hdfs/Spark3.0/build/mvn: line 131: cd: /home/hdfs/Spark3.0/build/scala-2.12.10/bin/../lib: No such file or directory

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.0/build/mvn: line 148: /home/hdfs/Spark3.0/build/zinc-0.3.15/bin/zinc: No such file or directory

......

这个时候一定要淡定,这里的信息其实是编译的时候需要依赖apache-maven-3.6.3-bin.tar.gz、scala-2.12.10.tgz、zinc-0.3.15.tgz,如果不存在则会自动下载,但是下载其实是失败的,我们选择手动下载这几个包,放在build里面解压好。

spark代码实战(Spark3.0发布了)(4)

接下来我们执行:

/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 "<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中可以看到,我直接写成固定的就行,改成如下:

VERSION=3.1.0-SNAPSHOT

SCALA_VERSION=2.12

SPARK_HADOOP_VERSION=2.7.4

SPARK_HIVE=3.2

另外,我们为了执行下载的时候速度快些,我们把maven的仓库地址换掉:

<mirror>

<id>alimaven</id>

<name>aliyun maven</name>

<url>http://maven.aliyun.com/nexus/content/groups/public/</url>

<mirrorOf>central</mirrorOf>

</mirror>

再次编译,可以动了:

spark代码实战(Spark3.0发布了)(5)

接下来就是等待了,编译完成之后会就可以看到我们的包了

spark代码实战(Spark3.0发布了)(6)

spark代码实战(Spark3.0发布了)(7)

一些编译过程中的小问题

  • FullGC的问题

编译这个工作需要多试几次,编译的时候我发现还有本身maven慢的问题

[hdfs@daas-service-01 ~]$ jps -ml

78904 org.codehaus.plexus.classworlds.launcher.Launcher -DzincPort=3030 clean package -DskipTests -Phadoop-2.6 -Phive -Phive-thriftserver -Pyarn -DskipTests

[hdfs@daas-service-01 ~]$ jstat -gcutil 78904 1000

S0 S1 E O M CCS YGC YGCT FGC FGCT GCT

71.26 0.00 21.62 9.53 91.05 95.86 80 4.021 7 2.064 6.085

71.26 0.00 34.02 9.53 91.05 95.86 80 4.021 7 2.064 6.085

71.26 0.00 43.84 9.53 91.05 95.86 80 4.021 7 2.064 6.085

71.26 0.00 55.63 9.53 91.05 95.86 80 4.021 7 2.064 6.085

71.26 0.00 73.30 9.53 91.05 95.86 80 4.021 7 2.064 6.085

71.26 0.00 87.28 9.53 91.05 95.86 80 4.021 7 2.064 6.085

0.00 77.58 3.99 9.53 91.06 95.69 81 4.090 7 2.064 6.154

0.00 77.58 11.90 9.53 91.06 95.69 81 4.090 7 2.064 6.154

针对这种现象,我们适度调整JVM的参数:

export MAVEN_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 code cache size using -XX:ReservedCodeCacheSize=

CodeCache: size=245760Kb used=243977Kb max_used=243996Kb free=1782Kb

bounds [0x00002aae10000000 0x00002aae1f000000 0x00002aae1f000000]

total_blobs=59407 nmethods=58763 adapters=539

compilation: disabled (not enough contiguous free space left)

这个其实就是代码缓冲区满了,按照提示我们可以适度加大这个数值,几个参数一起配合就是:

export MAVEN_OPTS="-Xms12g -Xmx12g -XX: UseG1GC -XX:ReservedCodeCacheSize=2g"

感兴趣的朋友可以跟着试试,有什么问题,可以在评论区留言告诉我哦~

注:本文转自「CSDN博客」

原文链接:

https://blog.csdn.net/zhuxuemin1991/article/details/105161234

猜您喜欢: