搭建Spark2.0源码研读和代码调试的开发环境

搭建Spark源码研读和代码调试的开发环境

工欲善其事,必先利其器,第一篇笔记介绍如何搭建源码研读和代码调试的开发环境。 一些必要的开发工具,请自行提前安装:

  • scala 2.11.8
  • sbt 0.13.12
  • maven 3.3.9
  • git 2.10.2
  • IntelliJ IDEA 2016.3 (scala plugin)


源码获取与编译

从Github上获取Spark源码

可以直接从Spark官方Github仓库拉取。本系列笔记基于Spark 2.0.2这个版本,所以先checkout这个tag,再进行之后的步骤:

$ git clone git@github.com:apache/spark.git
$ cd spark
$ git tag
$ git checkout v2.0.2 
$ git checkout -b pin-tag-202

如果想要push自己的commits,也可以fork到自己的Github账号下,再拉取到本地

编译Spark项目

参考官方文档,编译很简单,这里使用4个线程,跳过tests,以此加速编译。这个编译会产生一些必要的源代码,如Catalyst项目下的,所以是必要的一步:

$ build/mvn -T 4 -DskipTests clean package
# 编译完成后,测试一下
$ ./bin/spark-shell

packageAndRun

源码导入与代码运行

导入源码到Intellij IDEA 16

现在IDEA对scala支持已经比较完善,导入Spark工程非常简单:

Menu -> File -> Open -> {spark dir}/pom.xml -> Open as Project

openIDE

运行实例代码

导入工程后,介绍一下如何运行Spark项目自带的实例代码,在{spark dir}/examples/目录下,这里以LogQuery为例:

command + o -> 输入LogQuery打开

LogQueryCode

1. 配置运行参数:

Menu -> Run -> Edit Configurations -> 选择 + -> Application

参数配置如下: runConfigVM options: -Dspark.master=local代表使用本地模式运行Spark代码,也可以选择其他模式。 保存配置后,可以看到LogQuery在运行选项里了: runLogQuery

2. 添加缺失的flume sink源代码

首次运行LogQuery会报错,因为IDE找不到flume依赖的部分源码: flumeSinkError解决方案如下:

Menu -> File -> Project Structure -> Modules -> spark-streaming-flume-sink_2.11 -> Sources 1. 把 target目录加入Sources(点击蓝色Sources) 2. 把子目录sink也加入Sources

参考下图,注意右边的Source Folders列表: moduleFlumeSink

3. 添加运行依赖的jars

再次运行,这次会花费比较长的时间,因为已经可以成功编译LogQuery啦,但是还是没能运行成功,报错如下: missDepJars不要慌,这说明你的代码编译已经成功啦,运行出错的原因是,运行Spark App一般都是通过spark-submit命令,把你的jar运行到已经安装的Spark环境里,也就是所有的Spark依赖都已经有啦,现在你用IDE的方式,就会缺少依赖。

解决方案如下:

Menu -> File -> Project Structure -> Modules -> spark-examples_2.11 -> Dependencies 添加依赖 jars -> {spark dir}/spark/assembly/target/scala-2.11/jars/

addDepJars

有两点需要注意:

  • jars/*.jar: 这些依赖jars是在第一步编译打包Spark项目的时候产生的,如果这个目录是空的,或者修改了源代码想更新这些jars,可以用同样的命令再次编译Spark:

    $ build/mvn -T 4 -DskipTests clean package
    
  • 从上图中右侧的Scope一栏可以看到,基本上所有依赖jars都是Provided,也就是说默认都是提供的,因为默认都是用spark-submit方式运行Spark App的。

4. 成功运行实例代码

终于再次运行LogQuery的时候,可以看到输出啦: runLogQuerySuccessfully

单步调试源代码

千辛万苦地终于让实例代码在IDE里跑起来了,是不是很有成就感。其实做了那么多的铺垫工作,在IDE里面运行代码的最大福利是可以单步调试! 很简单,选择断点,然后Run -> Debug,可以看到中间变量值等等,其他的自行探索吧: debug

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 搭建 Spark 2 版本的源码阅读和调试环境可以使用 IntelliJ IDEA。以下是具体步骤: 1. 下载 Spark 2 的源代码:可以从 Spark 官网下载最新版本的源代码。 2. 安装 IntelliJ IDEA:可以从 IntelliJ 官网下载最新版本的 IDEA。 3. 导入 Spark 源代码:打开 IDEA,选择“File”->“New”->“Project from existing sources”,然后选择 Spark 源代码目录,按照步骤完成导入。 4. 配置 Scala 插件:打开 IDEA 的“Settings”->“Plugins”,安装 Scala 插件。 5. 配置 Scala SDK:打开 IDEA 的“Settings”->“Languages & Frameworks”->“Scala”,选择 Scala SDK 的路径,如果没有安装 Scala SDK,需要先安装。 6. 配置 SBT:打开 IDEA 的“Settings”->“Build, Execution, Deployment”->“Build Tools”->“SBT”,选择 SBT 的路径,如果没有安装 SBT,需要先安装。 7. 构建项目:打开 IDEA 中的 Terminal,在 Spark 源代码目录中输入“sbt compile”,构建项目。 以上是搭建 Spark 2 版本的源码阅读和调试环境的步骤,希望对您有所帮助。 ### 回答2: 要在IDEA中搭建Spark2版本的源码阅读调试环境,你可以按照以下步骤进行操作: 1. 首先,确保已经在你的机器上安装了Java和Scala,并且设置了相应的环境变量。 2. 下载Spark源码。你可以从Spark官方网站或GitHub上获取最新的Spark源码压缩包,然后解压到你选择的目录。 3. 打开IntelliJ IDEA,选择“Import Project”或者“Open”选项,导入Spark源码目录。 4. 确保已经安装了Scala插件。在打开的项目中,点击"File" -> "Sesttings" -> "Plugins",搜索并安装Scala插件。 5. 配置项目SDK。点击"File" -> "Project Structure",选择"SDK"选项,点击"+"号添加Java SDK和Scala SDK。 6. 配置编译选项。选择"File" -> "Project Structure",选择"Project"选项,在"Project SDK"下拉菜单中选择Java版本。 7. 设置Spark模块依赖项。在"Project Structure"窗口中,选择"Modules"选项,选择当前项目并点击"+"号添加依赖项。在弹出的窗口中选择"Libraries" -> "Java",然后添加Spark所需的所有依赖项。 8. 配置启动配置。在IntelliJ IDEA中点击"Run" -> "Edit Configurations",然后点击"+"号添加一个新的"Application"配置。在"Main Class"中输入你想要调试Spark类,比如"org.apache.spark.examples.SparkPi",在"Program arguments"中添加任何必要的参数。 9. 单步调试Spark源码。在IntelliJ IDEA中设置断点,并点击"Debug"按钮启动调试。 通过以上步骤,你就可以在IntelliJ IDEA中搭建Spark2版本的源码阅读调试环境了。这样你可以方便地阅读和分析Spark源码,并通过调试功能定位问题和了解Spark的内部工作原理。 ### 回答3: 要在idea中搭建Spark 2版本的源码阅读调试环境,可以按照以下步骤进行操作: 1. 下载源码:首先,从Spark官网(https://spark.apache.org/)或者GitHub仓库(https://github.com/apache/spark)上下载Spark 2版本的源码。 2. 安装必要的软件:确保已经安装了Java和Scala的开发环境。可以从官方网站上下载并安装最新版本的JDK和Scala。 3. 导入项目:打开IntelliJ IDEA,选择“Open”或者“Import Project”选项,然后导航到Spark源码的根目录下,选择build.sbt文件作为项目文件进行导入。 4. 设置项目SDK:在项目导入完成后,选择菜单栏中的“File” -> “Project Structure”,然后在左侧面板中选择“Project Settings” -> “Project”,在右侧面板的“Project SDK”中选择已经安装好的Java SDK版本。 5. 配置Scala编译器:在左侧面板中选择“Project Settings” -> “Project”,然后在右侧面板的“Project Compiler Output”中选择一个合适的目录作为编译输出路径。 6. 配置依赖项:在Spark源码根目录下,找到build.sbt文件,并按需编辑该文件,添加或修改需要的依赖项。然后使用命令行执行sbt命令,下载和构建项目所需的依赖项。 7. 启动调试:在IntelliJ IDEA中使用“Run” -> “Edit Configurations”菜单项,添加一个新的“Application”配置。配置“Main class”为"org.apache.spark.launcher.Main",并设置“Program arguments”为"org.apache.spark.deploy.SparkSubmit --class org.apache.spark.examples.SparkPi --master local[2] --deploy-mode client --executor-memory 1g --num-executors 2 /path/to/examples.jar"(示例命令),然后点击“OK”保存配置。 8. 开始调试:点击IntelliJ IDEA的“Debug”按钮运行调试,就可以在源码中设置断点,单步调试和观察变量的值了。 这是在IntelliJ IDEA中搭建Spark 2版本的源码阅读调试环境的基本步骤。根据具体的环境和需求,可能会有一些细微的差别,但总体上应该能够帮助你成功搭建环境并进行源码的阅读和调试

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值