大数据

新手小白第一次构建spark

2020-08-18  本文已影响0人  一ke大白菜

写在前面

Building Spark官网写的明明白白。看别人博客不如官网来的权威,我这篇文章仅仅记录本人编译spark源码的过程,不用于任何指导,有兴趣就看,没兴趣就可以到此结束了。跟着官网步骤去操作吧。

工具:

运行环境:

1、下载源码

如果你生活在种花家,请学会科学上网,这很重要。

因为不是用来修改spark源码,于是就直接clone github spark公共仓库的代码,clone下来的代码可以在本地修改编译运行,但是不可以直接向spark远程仓库提交,除非你是spark项目的contributor。问题来了,如果你不是contributor,怎么向spark贡献你的代码呢?自己去查资料好吧

在本地找个目录,执行git clone命令

(base) dongzhongwei@MacBook-Pro:IdeaProjects$ pwd
/Users/dongzhongwei/IdeaProjects
(base) dongzhongwei@MacBook-Pro:IdeaProjects$ git clone git@github.com:apache/spark.git
Cloning into 'spark'...
remote: Enumerating objects: 345, done.
remote: Counting objects: 100% (345/345), done.
remote: Compressing objects: 100% (152/152), done.
Receiving objects:   2% (17911/731648), 10.82 MiB | 454.00 KiB/s

正在下载中,这将在IdeaProjects目录下新建一个spark目录,用来存放spark源码,我已经开启了终端代理,无奈公司网速只有这么快。

完成spark源码下载

2、Idea导入源码文件

Idea菜单:open or import->选择spark文件夹->选择maven导入
此后Idea将进入一段下载spark项目依赖,建立文件index的时间,可能会比较长,耐心等待一下。

这里我设置了idea http proxy,以便让maven顺利的从中央仓库下载依赖。

spark源代码导入

pom文件如果红色报错不用管。

3、初次尝试编译

spark每个版本所以依赖的hadoop生态组件版本和运行环境都不尽相同,这次我选择spark2.4.0版本进行编译。

spark源码使用了git进行了版本管理,所以在本地新建一个分支并切换到v2.4.0。

(base) dongzhongwei@MacBook-Pro:spark$ git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean
(base) dongzhongwei@MacBook-Pro:spark$ git checkout -b branch-2.4 v2.4.0
Checking out files: 100% (6397/6397), done.
Switched to a new branch 'branch-2.4'
(base) dongzhongwei@MacBook-Pro:spark$ git branch
* branch-2.4
master

切换到2.4.0版本后,idea需要对项目重新进行index和下载依赖jar包,所以又要花费一点时间。

spark支持maven和sbt两种方式进行编译和打包,因为我没用过sbt,所以还是使用maven进行编译。

废话不多说,先clean package起来,这里maven的启动参数都是默认的,并没有作特殊设置。还有一点是貌似spark项目里自带了maven和sbt,但是我使用的是自己安装的maven。

(base) dongzhongwei@MacBook-Pro:spark$ mvn -DskipTests clean package
[INFO] Scanning for projects...

接下来就陷入了漫长的等待时间。。。。看看会不会报什么错,出问题也不怕,兵来将挡水来土掩。

[INFO] Reactor Summary for Spark Project Parent POM 2.4.0:
[INFO] 
[INFO] Spark Project Parent POM ........................... SUCCESS [  3.185 s]
[INFO] Spark Project Tags ................................. SUCCESS [  4.922 s]
[INFO] Spark Project Sketch ............................... SUCCESS [  6.144 s]
[INFO] Spark Project Local DB ............................. SUCCESS [  3.572 s]
[INFO] Spark Project Networking ........................... SUCCESS [  7.425 s]
[INFO] Spark Project Shuffle Streaming Service ............ SUCCESS [  4.312 s]
[INFO] Spark Project Unsafe ............................... SUCCESS [  9.603 s]
[INFO] Spark Project Launcher ............................. SUCCESS [  5.707 s]
[INFO] Spark Project Core ................................. SUCCESS [02:50 min]
[INFO] Spark Project ML Local Library ..................... SUCCESS [ 26.513 s]
[INFO] Spark Project GraphX ............................... SUCCESS [ 37.998 s]
[INFO] Spark Project Streaming ............................ SUCCESS [01:10 min]
[INFO] Spark Project Catalyst ............................. SUCCESS [02:44 min]
[INFO] Spark Project SQL .................................. SUCCESS [04:16 min]
[INFO] Spark Project ML Library ........................... SUCCESS [03:29 min]
[INFO] Spark Project Tools ................................ SUCCESS [  6.501 s]
[INFO] Spark Project Hive ................................. SUCCESS [02:23 min]
[INFO] Spark Project REPL ................................. SUCCESS [ 27.728 s]
[INFO] Spark Project Assembly ............................. SUCCESS [  4.571 s]
[INFO] Spark Integration for Kafka 0.10 ................... SUCCESS [ 41.250 s]
[INFO] Kafka 0.10+ Source for Structured Streaming ........ SUCCESS [ 56.293 s]
[INFO] Spark Project Examples ............................. SUCCESS [ 38.532 s]
[INFO] Spark Integration for Kafka 0.10 Assembly .......... SUCCESS [  3.941 s]
[INFO] Spark Avro ......................................... SUCCESS [ 24.703 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  22:07 min
[INFO] Finished at: 2020-08-18T16:05:16+08:00

哈哈哈,一次编译成功,没有报错。由于我的机器是双核8G的配置,因为build的时间显得长了一些(ps:多搬砖多赚钱换更好的机器)。

接下来运行一下spark的example,因为编译过程中会生成一些jar包,所以不编译是无法在本地运行spark测试用例的:

(base) dongzhongwei@MacBook-Pro:spark$ ./bin/run-example SparkPi

可以看到输出:

20/08/18 17:28:24 INFO DAGScheduler: Job 0 finished: reduce at SparkPi.scala:38, took 0.667610 s
Pi is roughly 3.1418757093785468
20/08/18 17:28:24 INFO SparkUI: Stopped Spark web UI at http://172.30.60.103:4040

所以第一次尝试构建spark到这里告一段落了,后面就可以在本地调试spark源码了。

上一篇下一篇

猜你喜欢

热点阅读