您的位置:首页 > 其它

spark源码远程调试开发

2017-12-11 18:17 197 查看
对于spark源码和spark执行过程有兴趣的同学,可以搭建一个spark的源码调试环境,来调试远程spark源码执行过程。

由于spark启动都是通过脚本设置一些环境变量执行指定类来启动的,所以在ide里面不能直接调试,需要预先启动一个spark执行代码,然后通过本地的代码进行远程调试。

1.环境

idea 2017

maven 3.3(可以将maven的镜像地址设置成国内的,不然编译很久或编译不成功)

jdk 1.8

spark 2.x

scala 2.11

2.下载源码并编译

spark源码导入ide之前要先编译,编译的时候要用到build包里面的脚本,由于脚本是shell,故在windows编译不了,可以在linux上编译好之后放到windows上。

git clone https://github.com/apache/spark.git cd spark
#切换到2.2版本
git checkout branch-2.2
./build/mvn -DskipTests clean package




编译好之后,在idea里面导入spark源码

3.在ide里面调试

这里以调试spark-sql为例。

首先启动spark-sql,在后面添加上远程调试的参数

sbin/start-thriftserver.sh --driver-java-options "-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=10080"


dt_socket:使用的通信方式

server:是主动连接调试器还是作为服务器等待调试器连接

suspend:是否在启动JVM时就暂停,并等待调试器连接

address:地址和端口,地址可以省略,两者用冒号分隔



启动thriftservier后,日志里面显示这样一条记录,就表示客户端可以远程进行源码调试

在idea里面创建一个远程调试客户端,并设置源码进行调试。







点击OK,创建好远程调试客户端。

如下图点击debug,运行。



控制台显示已经连接到远程调试服务



打开PaseDriver并在如图所在行设置断点。

这个类相当于hive的driver类,负责编译sql语句和生成spark任务,在这里就可以查看sql语句是怎样转换成一步步的spark rdd转换。

到这里,用beeline连接thriftserver,并直接一个sql语句,如”show tables”

执行完之后,beeline的命令行就会挂起,这时在idea里面就可以调试执行过程了。



4.其它

例子里面的spark-sql相关可以参考

http://blog.csdn.net/dante_003/article/details/78657689

http://blog.csdn.net/dante_003/article/details/78652534
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: