idea调试远端服务器的Spark集群程序(存在跳板机)

来公司刚好一个月了,甚是吃惊的是,居然没有人用远端调试的方式运行spark程序,这在一直写Torch和Keras的人看来,简直无法想象,所以一顿操作如下终于弄好。

其中主要难点在于本机和服务器中间存在跳板机,需要建立ssh连接。

思路主要参考这两篇文章:

1.http://www.cloudchou.com/web/post-996.html,这是一篇java远程debug教程,但是java和scala基本一致,所以可以参考

2.https://www.bigendiandata.com/2016-08-26-How-to-debug-remote-spark-jobs-with-IntelliJ/,这是同一网段内的spark debug,可以借鉴

融合两篇文章,就得到如下教程:

0、首先配置本机idea

之所以设置5006是因为默认的5005被占用了,应该是服务器上有其他人也在remote debug。

# 0. set "localhost" and "5006" in idea debug configurations
"Host":localhost
"Port":5006
"Command line arguments for remote JVM":-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5006

在这里插入图片描述

1、连接跳板机(本地执行)

# 1. first, ssh to jump machine and set port as 5006
export JUMP_SERVER_USER=跳板机用户名
export SERVER_IP=你的服务器ip
export JUMP_SERVER_PORT=5044
export JUMP_SERVER_IP=跳板机ip

ssh -l $JUMP_SERVER_USER -L 5006:$SERVER_IP:5006 -p $JUMP_SERVER_PORT $JUMP_SERVER_IP -i ~/.ssh/你的rsa
# 如果没有rsa,去掉`-i`参数,下同

2、在跳板机内连接你的服务器

# 2. second, connect Server in jump machine
# the following command is running in jump machine

export USER_NAME=服务器用户名
export SERVER_IP=服务器ip
ssh -l $USER_NAME $SERVER_IP -p 5044 -i ~/.ssh/你的rsa

3、在你的服务器上运行spark,并设置debug和数据传输协议和端口等数据

就像正常提交spark程序一样~如下:

# 3. third, listening jvm program on port 5006 and run spark-submit
# the following command is running in server

export SPARK_SUBMIT_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5006
spark-submit --packages "xxx" --files "xxx" --class xxx xxx.jar

如果终端出现这行:

Listening for transport dt_socket at address: 5006

那么就对了,现在可以去idea调试了~

对了,大概的调试原理如下:

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值