在Windows-IDEA调试Spark的 Master、Worker、Executor、Application、Shell

举报
Lettle whale 发表于 2020/06/30 17:45:43 2020/06/30
【摘要】 在Windows-IDEA调试Spark的 Master、Worker、Executor、Application、Shell

Windows-IDEA调试Spark MasterWorkerExecutorApplicationShellSQL进程

 

软件

说明

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.Maindebug方式拉起,编辑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.JavaWordCountmain函数入口,如下图

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

待补充

 


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。