Spark-断点调试

我是用idea + spark-shell断点调试spark源码的, 可以一行代码一行代码的追执行过程, 很是方便, 学习Spark源码必备.

准备工作

首先肯定是要把Spark的源码准备好, 并且导入到idea里, 从哪下Spark源码和怎么导入到idea里我就不详细解释了.
另外启动Spark需要Hadoop和Hive的支持, 首先要把这两个服务搭好启动起来, 关于这部分本篇文章暂且不讲, 请自行百度.

设置idea的debug配置

此处输入图片的描述
点击Edit Configuration去添加调试.
此处输入图片的描述
然后点击左上角的加号, 在列表中选择Remote选项
此处输入图片的描述
创建出来的这些东西什么设置都不用动, 可以把Name改一个自己好记的, 比如我的local Spark, 划红线的部分就是一会要使用的.

启动spark-shell

进入Spark的bin目录下执行以下命令

1
./spark-shell -h

可以看到spark-shell启动时可以指定个各种参数, 其中我们要用到的有以下两个:

1
2
3
--master MASTER_URL         spark://host:port, mesos://host:port, yarn, or local.

--driver-java-options Extra Java options to pass to the driver.

master参数, 指定启动方式, 我们起本地模式, 所以用local.
driver-java-options参数, driver端的一些java参数, 就是刚才划红线的部分.

那么启动命令拼起来就是这样的:

1
./spark-shell --master local --driver-java-options -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

敲回车启动以后可以看到这么一句话

1
Listening for transport dt_socket at address: 5005

表示已经开始监听5005端口, 接下来去启动idea.

启动idea

此处输入图片的描述
再回到图一的位置, 选择上刚才创建的local Spark, 然后点击旁边的debug按钮, 就正式进入debug模式了, 现在就可以随心所欲的打断点调试Spark了.

打赏
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  • © 2017-2023 王丹鹏
  • Powered by Hexo Theme Ayer
  • 冀ICP备15029707号

请我喝杯咖啡吧~

支付宝
微信