看过亚太研究院的spark在线教学视频,说spark1.0的源码仅有3w+的代码,蠢蠢欲动。先具体看下源码的量,估算估算;然后搭建eclipse读码环境。
计算源码行数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
全部源码的数量(去掉测试)大概在7W左右,仅计算核心代码core下面的代码量在4W。从量上面来说还是比较乐观的,学习scala然后读spark的源码。
spark1.0.0的核心代码量在3w左右。1.1多了大概1w行!!
Docker
查看目录结构的时刻,看到spark1下面竟然有docker,不过看Dockerfile的内容只是简单的安装了scala、把本机的spark映射到docker容器、然后运行spark主从集群。
导入eclipse
spark使用主要使用scala编写,首先需要下载scala-ide直接下载2.10的版本(基于eclipse,很多操作都类似);然后下载spark的源码检出v1.1.0的;然后使用maven生成eclipse工程文件。
(不推荐)使用sbt生成工程文件。这种方式会缺少一些依赖的jar,处理比较麻烦,还不清楚到底是少了啥!
1 2 3 4 |
|
(推荐)使用MVN编译生成,使用Maven生成官网文章
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
然后导入到eclipse,然后再针对性的处理报错:
- 先把每个工程都添加scala特性
- 把含有python源码包的去掉(手动删除.classpath中classpathentry即可)
- 确认下并加上
src/test/scala
的源码包。
注意,进行上面的步骤之前,由于scala源文件比较多,编译的时间会比较长,先把Project->Build Automatically去掉,然后一次性把问题处理掉后再手动build!
- 手动使用
existing maven projects
导入yarn/stable,然后把yarn/common以链接的形式引入,并添加到源码包。
还有一个 value q is not a member of StringContext quasiquotes的错误,有些类需要在2.10添加编译组件才能正常编译,修改scala编译首选项。
添加依赖的编译组件后,整个功能就能正常编译通过了。接下来就能调试看源码了。
备注:clean后发现target目录下并没有重新编译生成class,去掉-Xshow-phases
才行。
-Xshow-phases Print a synopsis of compiler phases.
Maven编译spark
如果使用的hadoop版本在官网没有集成assembly版本,可以使用maven手动构建。至于打包可以查看下一篇文章。
1 2 |
|
yarn
的profile能够编译成可执行的jar文件(包括所有依赖的spark),具体内容下一篇讲。
小结
断断续续的写了两天,字数统计弄了大半天,主要在于多行注释的处理。时间最主要都消耗在sbt、maven构建eclipse项目文件(生成、fixed)上。编译scala量上去后确实非常非常的慢,不管是maven还是eclipse都慢!
下一篇将使用docker搭建spark环境,并使用远程调试连接到helloworld程序。
参考
–END