博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spark源码分析调试环境搭建
阅读量:6912 次
发布时间:2019-06-27

本文共 1346 字,大约阅读时间需要 4 分钟。

hot3.png

目前常用的Spark版本有三种Cloudera、HDP和Apache,源码的获取方式可以在各自官网下载。本文选择Apache版本。

搭建环境所需要的工具如下:

  • CentOS 7
  • maven 3.5.0
  • Java 1.8.0
  • Scala 2.12.2
  • IntelliJ IDEA2017.1.2

本人选择在服务器上进行编译和调试,机器配置为至强CPU(56核)、内存256G。

下载源码

首先将 fork到自己的github仓库,接着再IDEA上通过VCS->Checkout from Version Control->Github 中选择刚刚fork下来到本地

配置本地maven

本文选择使用自己搭建的maven仓库,Spark源码自带的maven会从官方镜像上下载所需的依赖,此步骤会比较耗时,设置为本地maven仓库后,速度会大幅提升。设置方法如下图所示

preview

编译Spark源码

选择的最新版的Spark,目前是2.3.0。编译Spark源码,使用自己安装的maven进行编译,其中-T参数是设置编译的线程数,这里设置的是20

mvn -T 5 -DskipTests clean package

经过12分钟的等待,Spark源码编译完成,如下图所示

preview

接着可以通过运行下spark-shell来测试一下编译结果

./bin/spark-shell

preview

运行Spark源码自带的实例程序

由于大多数程序都是从hello world开始的,对应的,Spark的第一个程序为wordcount,我们选择调试JavaWordCount。

打开JavaWordCount程序

26154251_WsOQ.jpg

在代码编辑区右键选择

Create 'JavaWordCount.main()'...

设置如下图所示

preview

其中

VM options: -Dspark.master=local
Program arguments:/home/spark-sourcecode/examples/src/main/resources/people.txt

保存运行配置,这样直接运行会出现以下两个错误,缺失flume sink

  • 缺失flume sink

preview

解决方法是在

View->Tool Windows->Maven Projects

在Spark Project External Flume Sink上右键选择Generate Sources and Update Folders

26154252_gJ28.jpg

  • 缺少Spark环境Jars包

preview

解决方案如下:

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

preview

接着成功运行JavaWordCount

26154316_zvs6.jpg

调试例子程序

preview

接下来就可以看到Spark程序运行时每个变量的值变化,方便我们对Spark源码的设计进行分析。

不过当我们修改了Spark源码后,我们得使用前面的编译命令对其进行重新编程生成。

转载于:https://my.oschina.net/u/2935389/blog/1556706

你可能感兴趣的文章
Linux之Web服务(2)Httpd服务配置之二
查看>>
Nginx的安装与负载均衡配置
查看>>
wglCreateContext
查看>>
cacti 使用script query 详解 - 例子 监控mysql中数据库占用磁盘量【整理后】
查看>>
jenkins 内存泄露处理方法
查看>>
我的友情链接
查看>>
paramiko模块报异常:No handlers could be found for logge
查看>>
内网接口调用,ssh反向隧道与nginx反向代理
查看>>
LINUX 1-0学习前的准备及基础知识
查看>>
关连接此设备的正确安全设置,请查阅 SDK 文档
查看>>
PHP的起源与发展
查看>>
我所认识的JavaScript正则表达式
查看>>
wmsys.wm_concat用法和排错
查看>>
Javascript写入txt和读取txt文件示例
查看>>
Xamarin XAML语言教程使用使用Progress属性设置当前进度
查看>>
信息批量提取工具bulk-extractor
查看>>
Linux 修改网卡名eth0
查看>>
jsp中的绝对路径
查看>>
婚礼上播放的歌曲
查看>>
数据库备份文件上传到ftp服务器脚本
查看>>