1 调试 1.1 SPARK-SHELL 程序调试 交互式本身可以认为是一种调试方式; 或根据Sparkshell 脚本,调试对应的入口Object。 1.2 IDEA 程序调试 程序调试分本地调试和远程调试两种: 1. 本地调试时,直接在 IDEA 里调试对应的类即可(根据启动该类的脚本进行模拟,模拟内容包括启动脚本中的环境变量设置等); 2. 远程调试时,需要设置对应的Jav a 启动选项 OPTS(即 JVM 调试参数的设置),打开调试对象(要启动的类)对应的远程调试端口,然后在 IDEA 中,配置远程调试的设置,在设置中,指定远程对应的host 和 port,进行监听,设置完成后,启动该调试对象(根据调试对象启动脚本中对应的类,并尽可能模拟启动脚本,包括脚本中的环境变量设置等)的调试即可。 如何打开远程调试,即 OPTS 如何设置,参考远程调试章节。 说明:本文档里只写了一种方式,就是脚本启动时使用到的OPTS 环境变量,实际上,可以直接在脚本的jav a 执行代码前面,加上调试参数,这样的话,你启动时,不需要设置 OPTS,而只需要在某个节点上修改启动脚本,在 start-all.sh 的时候,就不会影响全部节点,而只会影响修改了脚本的节点。如修改了 Worker 的启动脚本时,只有该节点上的Worker 是打开了远程调试的。 1.2.1 调试环境搭建 IDEA 调试环境需构建在 Spark 安装包部署 + Spark 源码的基础上。 即,在调试机器上进行带 Spark 源码的Spark 安装包部署。可以同时作为Spark 客户端和 Spark 源码环境。 1.2.2 远程调试 1. JVM 调试参数配置 远程调试时,结合JDWP(Java Debug Wire Protocol)进行,在JVM 进程启动前,添加相应的JAVA_OPTS,设置远程调试参数,比如: -Xdebug -server -Xrunjdwp:transport=dt_socket,address=7777,server=y,suspend=y 启动JVM 进程(通常就是执行对应的启动脚本)后会停留在 Listening for transport dt_socket at address: 7777 ,IDE 连接后才会继续。 2. 对于 Spark 的守护进程的调试参数配置 可以在SPARK_DAEMON_JAVA_OPTS 环境变量中统一添加远程调试参数,此时要确保要调试的守护进程不在同一台机器上。 可以在具体的守护进程特定的XXX_OPTS 环境变量中设置。此时,如果调试的守护进程在同一台机器上,可以通过设置不同的调试端口进行区分。 其中环境变量参考 spark-env.sh 文件,有以下几种: SPARK_MASTER_OPTS SPARK_...