使用 IntelliJ IDEA 导入 Spark源码及编译 Spark 源代码
各位工程师累了吗? 推荐一篇可以让你技术能力达到出神入化的网站"宅男门诊"
1. 准备工作
首先你的系统中需要安装了 JDK 1.6+,并且安装了 Scala。之后下载最新版的 IntelliJ IDEA 后,首先安装(第一次打开会推荐你安装)Scala 插件,相关方法就不多说了。至此,你的系统中应该可以在命令行中运行 Scala。我的系统环境如下:
1. Mac OS X(10.10.4)
2.JDK 1.7.79
3.Scala 2.10.4
4. IntelliJ IDEA 14
另外,最后还是建议大家开始先使用 pre-built 的 Spark,对 Spark 的运行、使用方法有所了解,编写了一些 Spark 应用程序后再展开源代码的阅读,并尝试修改源码,进行手动编译。
2. 从 Github 导入 Spark 工程
打开IntelliJ IDEA 后,在菜单栏中选择 VCS→Check out from Version Control→Git,之后在 Git Repository URL 中填入 Spark 项目的地址,并指定好本地路径,如下图所示。
点击该窗口中的的 Clone 后,开始从 Github 中 clone 该项目,该过程试你网速而定,大概需要3-10分钟。
3. 编译 Spark(开发 jar 包)
当 clone 完毕后,IntelliJ IDEA 会自动提示你该项目有对应的 pom.xml 文件,是否打开。这里直接选择 Open 该 pom.xml 文件,然后系统会自动解析项目的相关依赖,该步骤也会因你的网络和系统相关环境,所需时间不同。
该步骤完成之后,请手动编辑 Spark 根目录下的 pom.xml 文件,找到其中指定 java 版本的那一行(java.version),根据你的系统环境,如果使用的是 jdk1.7 ,那么或许需要你将其值改成1.7(默认是1.6)。
之后打开 shell 终端,在命令行中进入刚才导入的 spark 项目根目录,执行
sbt/sbt assembly
该编译命令将全部采用默认的配置来编译 Spark,若想指定相关组件的版本,可以查看 Spark 官网中的 Build-Spark(http://spark.apache.org/docs/latest/building-spark.html),查看所有常用的编译选项。该过程目前不需要 VPN 即可完成,为了预估编译所需的时间,你可以在新开一个 shell 终端,不断查看 spark 项目目录的大小,我最终采用默认配置,编译成功后的 spark 目录大小为2.0G。
4.编译 spark (生成部署安装包)
编译完源代码后,虽然直接用编译后的目录再加以配置就可以运行spark,但是这时目录很庞大,部署起来不方便,所以需要生成部署包。
spark源码根目录下带有一个脚本文件make-distribution.sh可以生成部署包,其参数有:
--tgz:在根目录下生成 spark-$VERSION-bin.tar.gz,不加参数是不生成tgz文件,只生成/dist目录。
--hadoop VERSION:打包时所用的Hadoop版本号,不加参数时为1.0.4。
--with-yarn:是否支持Hadoop YARN,不加参数时为不支持yarn。
--with-tachyon:是否支持内存文件系统Tachyon,不加参数时为不支持,此参数spark1.0.0-SNAPSHOT之后提供。
如果要生成spark支持yarn、hadoop2.6.0的部署包,只需要将源代码复制到指定目录,进入该目录后运行:
make-distribution.sh --name custom-spark --tgz -Psparkr -Phadoop-2.6 -Phive -Phive-thriftserver -Pyarn
make-distribution.sh --tgz --skip-java-test -Pyarn -Phadoop-2.6-Dhadoop.version=2.6.0 -Phive -Phive-thriftserver -DskipTests clean package
阿斯达f
5. 结束语
至此,为了检验你的编译结果,可以在命令行中进入 spark/bin 目录,运行 spark-shell,若一切都正常启动,则编译成功。若你修改了 Spark 的源码,可以重新使用 sbt 来进行编译,并且编译的时间不会像第一次编译那么长。
使用 IntelliJ IDEA 导入 Spark源码及编译 Spark 源代码的更多相关文章
- 使用 IntelliJ IDEA 导入 Spark 最新源码及编译 Spark 源代码
前言 其实啊,无论你是初学者还是具备了有一定spark编程经验,都需要对spark源码足够重视起来. 本人,肺腑之己见,想要成为大数据的大牛和顶尖专家,多结合源码和操练编程. 准备工作 1.sca ...
- 使用 IntelliJ IDEA 导入 Spark 最新源码及编译 Spark 源代码(博主强烈推荐)
前言 其实啊,无论你是初学者还是具备了有一定spark编程经验,都需要对spark源码足够重视起来. 本人,肺腑之己见,想要成为大数据的大牛和顶尖专家,多结合源码和操练编程. 准备工作 1.sca ...
- Spark源码分析之Spark Shell(下)
继上次的Spark-shell脚本源码分析,还剩下后面半段.由于上次涉及了不少shell的基本内容,因此就把trap和stty放在这篇来讲述. 上篇回顾:Spark源码分析之Spark Shell(上 ...
- spark 源码分析之六--Spark RPC剖析之Dispatcher和Inbox、Outbox剖析
在上篇 spark 源码分析之五 -- Spark内置RPC机制剖析之一创建NettyRPCEnv 中,涉及到了Diapatcher 内容,未做过多的剖析.本篇来剖析一下它的工作原理. Dispatc ...
- spark 源码分析之八--Spark RPC剖析之TransportContext和TransportClientFactory剖析
spark 源码分析之八--Spark RPC剖析之TransportContext和TransportClientFactory剖析 TransportContext 首先官方文档对Transpor ...
- Spark源码的编译过程详细解读(各版本)
说在前面的话 重新试多几次.编译过程中会出现下载某个包的时间太久,这是由于连接网站的过程中会出现假死,按ctrl+c,重新运行编译命令. 如果出现缺少了某个文件的情况,则要先清理maven(使用命 ...
- Spark源码分析之Spark Shell(上)
终于开始看Spark源码了,先从最常用的spark-shell脚本开始吧.不要觉得一个启动脚本有什么东东,其实里面还是有很多知识点的.另外,从启动脚本入手,是寻找代码入口最简单的方法,很多开源框架,其 ...
- Spark源码的编译过程详细解读(各版本)(博主推荐)
不多说,直接上干货! 说在前面的话 重新试多几次.编译过程中会出现下载某个包的时间太久,这是由于连接网站的过程中会出现假死,按ctrl+c,重新运行编译命令. 如果出现缺少了某个文件的情况,则要 ...
- spark 源码分析之五 -- Spark内置RPC机制剖析之一创建NettyRpcEnv
在前面源码剖析介绍中,spark 源码分析之二 -- SparkContext 的初始化过程 中的SparkEnv和 spark 源码分析之四 -- TaskScheduler的创建和启动过程 中的C ...
随机推荐
- MVC5-11 浅谈拦截器
Filter拦截器 Aop是MVC的主要设计方式之一,而微软也希望我们在使用MVC的时候更好的使用拦截器来进行切面编程.拦截器则是Mvc中的一大亮点与重点 AOP(面向切面)编程已经广泛应用在各个项目 ...
- java字符串拼接与性能
使用 Concatenation Operator (+) String concat method – concat(String str) StringBuffer append method – ...
- 【Beta版本】冲刺-Day5
队伍:606notconnected 会议时间:12月13日 目录 一.行与思 二.站立式会议图片 三.燃尽图 四.代码Check-in 一.行与思 张斯巍(433) 今日进展:继续修改界面及图标设计 ...
- 【Alpha版本】冲刺-Day4
队伍:606notconnected 会议时间:11月12日 会议总结 张斯巍(433) 今天安排:图片查看界面设计 完成度:40% 明天计划:设置界面设计 遇到的问题:校运会比赛时间不够 感想:因为 ...
- p:commandButton vs h:commandButton
同样的语句,换成primefaces就不刷新页面了.原来p的支持ajax.需要显示指定刷新全部页面.郁闷了一天了. <p:commandButton id="SearchTop&quo ...
- MFC学习-第2,3课 MFC框架的运行机制
转自:http://blog.163.com/zhigang0633@126/blog/static/38790491200822711526168/ 讲述MFC AppWizard的原理与MFC程序 ...
- nodejs fs module
fs.watchFile(filename[, options], listener)# Added in: v0.1.31 filename <String> | <Buffer& ...
- 9月23日JavaScript作业----两个列表之间移动数据
作业一:两个列表之间数据从一个列表移动到另一个列表 <div style="width:600px; height:500px; margin-top:20px"> & ...
- 安装ubuntu和安装ubuntu后要安装的软件列表
安装ubuntu 老毛桃进入win pe修复启动项 在win pe下面制作ubuntu的安装盘,只用的软件是ultraISO 参考博客下面的分区的那篇文章 http://jingyan.baidu. ...
- CV界的明星人物们
CV界的明星人物们 来自:http://blog.csdn.net/necrazy/article/details/9380151,另外根据自己关注的地方,加了点东西. 今天在cvchina论坛上看到 ...