设为首页 加入收藏

TOP

Windows下搭建Spark源码阅读与调试环境
2019-01-19 13:26:55 】 浏览:55
Tags:Windows 搭建 Spark 源码 阅读 调试 环境
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/do_yourself_go_on/article/details/73129408

了解和使用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 standalone 模式下 kill jo.. 下一篇Spark大规模机器学习的性能瓶颈和..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目