在Windows-IDEA调试Spark的 Master、Worker、Executor、Application、Shell
在Windows-IDEA调试Spark的 Master、Worker、Executor、Application、Shell、SQL进程
软件 |
说明 |
JDK8 |
Scala运行依赖jvm |
Scala-2.11 |
Scala版本号选择2.11 |
Spark-2.3 |
Spark版本号选择2.3 |
Apache Maven 3.3.9 |
版本可选 |
IntelliJ IDEA社区版 |
官网可免费下载社区版 |
cygwin |
编译过程 ant 和sh脚本需要linux环境 |
该文档依赖文档【在Windows-IntelliJ IDEA启动Spark Cluster、spark App、Spark shell和Spark sql.docx】,后续内容简称前文档。
1 Debug Master进程
阅读前文档,IDEA中配置好Master进程,点击Debug按钮,如下
2 Debug Worker进程
阅读前文档,IDEA中配置好Worker进程,点击Debug按钮,如下
备注:debug模式下,worker进程最好只保持一个。
3 Remote Debug Launcher进程
3.1 阅读spark-class2脚本,进程拉起的顺序是org.apache.spark.launcher.Main-> org.apache.spark.deploy.SparkSubmit->
org.apache.spark.examples.JavaWordCount
脚本的调用顺序是run-example -> spark-submit -> spark-class2
3.2 配置org.apache.spark.launcher.Main以debug方式拉起,编辑spark-class2.cmd,新增jvm启动参数
-Xdebug Xrunjdwp:transport=dt_socket,address=2000,server=y,suspend=y
备注:注意suspend=y或者n的区别
如下图
3.3 IDEA Terminal提交app,命令是
run-example --master spark://localhost:7077 JavaWordCount "C:\Users\w00403095\Desktop\weizheng.txt"
如下图
3.4 新增Remote debug,如下图
备注:port需要和步骤3.2中的port保持一致
3.5 保存点击debug按钮,触发了org.apache.spark.launcher.Main中的断点,如下图
4 Remote Debug SparkSubmit/App进程
4.1 JavaWordCount(spark app)是通过spark-submit脚本拉起,所以IDEA中只能以remote方式debug
4.2 IDEA Terminal新增环境变量set SPARK_SUBMIT_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=2001,server=y,suspend=y
备注:注意suspend=y或者n的区别
如下图
4.3 使用3.3步骤中的命令在上述Terminal中提交spark app,如下图org.apache.spark.deploy.SparkSubmit主函数入口等待debug监听
4.4 新增Remote debug,端口和4.2步骤中的环境变量SPARK_SUBMIT_OPTS保持一致, 如下图
4.5 保存点击debug按钮,触发了org.apache.spark.deploy.SparkSubmit中的断点,如下图
4.6 进一步深入debug,就触发了org.apache.spark.examples.JavaWordCount的main函数入口,如下图
SparkSubmit.scala主类 -> JavaWordCount.java主类的调用堆栈如下图
5 Remote Debug Executor进程
5.1 Spark App提交后,Worker节点拉起Executor进程来做计算,IDEA只能以remote方式调试Executor进程。
5.2 配置Executor进程以debug模式启动,$SPARK_PROJECT/conf/目录下新增spark-defaults.conf文件,新增启动参数spark.executor.extraJavaOptions,如下图:
或者修改JavaWordCount.java新增java进程启动参数,如下
备注:注意suspend=y或者n的区别
5.3 使用步骤3.3中的命令提交spark app,观察worker console的日志输出,发现worker节点debug模式启动Executor进程,监听端口8005,如下图
5.4 新增Remote debug,端口和5.2步骤中的环境变量SPARK_SUBMIT_OPTS保持一致, 如下图
5.5 保存点击debug按钮,触发了org.apache.spark.executor.CoarseGrainedExecutorBackend中的断点,如下图
6 Debug Spark shell
待补充
7 Debug Spark sql
待补充
- 点赞
- 收藏
- 关注作者
评论(0)