写在前面的话
有了丰富的spark大数据处理经验和性能调优经验后,基于对spark高性能内存计算的爱慕,决定揭开其神秘的面纱,一睹芳容。
源码编译
在进行源码分析之前,最重要的一步是什么?
个人认为先把源码下载到本地,进行源码编译,编译成功后,就可以开启神秘探索的旅程了。万事开头难,no problem,我就喜欢迎难而上。
- 下载源码
1:登陆官网地址下载:http://spark.apache.org/downloads.html
选择相对应的版本,本文选择spark1.5.2
2:Github下载:git clone https://github.com/apache/spark - 编译方式
spark源码编译三大方式:
1:maven编译
2:sbt编译
3:打包编译make-distribution.sh
萝卜白菜,各有所爱,个人倾向于maven编译。 - 心得
有时间,自己一定要动手编译源码,想要成为高手和大数据领域大牛,前面的苦,是必定要吃的。
无论是编译spark源码,还是hadoop源码。新手初次编译,一路会碰到很多问题,也许会花上个一天甚至几天,这个是正常。把心态端正就是!有错误,更好,解决错误,是最好锻炼和提升能力的。
OK,实践出真知!
编译步骤
工欲善其事,必先利其器。
选取一个好的编辑器非常重要,我在scala编程之前一直用的eclipse进行java的开发,刚开始使用idea的时候真不习惯,包括编译、刷新、快捷键的使用;后来摸熟了后渐渐的爱上了她。不要问我为什么,告诉你两个字:感觉(你懂的)
哥们,别急,在导入代码之前,先准备好以下几件装备:
1: 安装jdk1.7
2: 安装maven(版本3.0以上自由选择)
注意:如果没有联网,需要创建本地内网仓库
3: 在idea上安装scala的插件(版本与spark版本对应)本文选择2.10.4
OK,万事俱备,开始导入源码
1: 待源码导入后,如果pom.xml文件报错,一定是没有联网,可以把报错的maven依赖需要的包从网上下载放入maven本地仓库中。
2: 待pom.xml的所有错误消失后,点击工程后右键选中
maven->reimport将依赖的jar包全部导入到工程中。
3: 此时如果顺利的话,代码不会有报错。在cmd命令中进入spark的源码目录执行如下maven命令:
mvn -Pyarn -Phadoop-2.4 -Dhadoop.version=2.4.0 -Phive -Phive-thriftserver -Psparkr -DskipTests clean package
很不幸,报错了:
出现错误:
Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.4.0:exec (sparkr-pkg) on project spark-core_2.10: Command execution failed. Process exited with an error: 127 (Exit value: 127) -> [Help 1]
解决办法如下:
将脚本中的-Psparkr改成-PR即可。
脚本改完后继续编译:未完待续。