您的位置:首页 > 其它

Windows下搭建Spark源码阅读与调试环境

2017-06-12 17:32 561 查看
了解和使用Spark有一段时间了,但是对Spark的一些原理和内部机制了解的不够深入,故打算研读一下Spark源码。今天首先介绍一下Spark源码阅读与调试环境的搭建。

开发工具安装

首先是一些必要的工具的安装,这里不一一介绍了,请读者自行提前安装好:(以下工具版本可自行选择,但是要符合Spark版本环境安装要求,可以参考官方文档)

- Java1.8

- Scala 2.11.11

- Maven 3.3.9

- Git 2.7.2

- Intellij IDEA 2017.1.1

源码获取与编译

从Spark官方Github仓库中获取源码

本文这里基于Spark 2.1.0这个版本进行讲解,故先从Github仓库中获取这个版本的源码,git执行命令如下图所示:



如果想获取Spark最新的开发版本,可以执行一下git命令:

# Master development branch
git clone git://github.com/apache/spark.git


等待下载完成,得到Spark 2.1.0源码

得到源码后对源码进行编译,Spark官方文档给出了基于SBT和Maven的编译方式,这里采用Maven方式编译。在编译之前,首先需要对Maven的相关参数进行配置,以确保编译过程中不会出错,在Maven安装目录下找到bin/mvn.cmd文件,打开在

@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000


后面添加如下设置:

MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m"


另外,如果你的JDK版本为JDK7的话,还需要在MAVEN_OPTS中添加额外的配置:

-XX:MaxPermSize=512M


设置好界面:



以上参数配置过程Linux系统下也可以不做,其实Spark中Maven脚本会帮你自动设置好相关参数,可以到Spark源码目录中查看文件:/build/mvn;配置如下图所示:



设置好相关参数之后切换目录到Spark源码根目录下面,开始编译Spark源码:

mvn -DskipTests clean package


这一步执行真的是错误多多啊,下面列出遇见的错误以及解决办法:

错误1:javac returned nonzero exit code ,debug一下,更加准确的信息是:javac returned exit code:2,仔细查看错误发现如下信息:



看到这里我才意识到应该是中文路径识别乱码的问题,于是调整Spark源码位置,将其放置于英文路径下,果然上述错误不在出现了。

错误2:java.io.IOException:cannt run program “bash”



Spark编译需要在bash环境下,直接在windows环境下编译会报不支持bash错误,这里利用git的bash窗口进行编译,解决了上述问题。

修正以上两个错误之后,终于编译成功,界面如下:



源码导入与测试运行

将上述编译成功后的源代码导入到Intellij IDEA,作为一个工程打开。以下部分解决方案参考了一片博文,原文地址:http://www.open-open.com/lib/view/1481511790315

导入源代码到IDEA

选择File-open-{sparkdir}/pom.xml,选中open as a project,然后等待完成,界面如下:



测试运行

选择Spark自带的example例子运行测试,测试结果如下:



测试结果出错,找不到Flume相关源代码:



解决方案:

File -> Project Structure -> Modules -> Sources 1. 把 target目录加入Sources(点击蓝色Sources) 2. 把子目录sink也加入Sources;

参考下图进行配置:



再次运行测试程序,这一步编译时间较长,请耐心等待。编译依然出错,这是例子程序缺少jar包造成的:



解决方案:添加依赖的jar包,这些jar包是之前maven编译时产生的:

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



再运行例子程序即可看到成功的输出界面:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spark windows 环境