我正在尝试通过AWS EC2机器对Spark应用进行远程调试。
我已经使用以下方法建立了ssh隧道:
ssh -i $HOME/pem/dev/dna-dev.pem -N -D 5005 hadoop@10.121.8.132
然后将适当的参数添加到我的spark-submit命令中:
spark-submit --driver-java-options -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005 --class org.sergio.dna.poc.TestEngine --master yarn --deploy-mode client --executor-memory 2G --num-executors 1 --executor-cores 1 DNA-Sergio-PoC-1.0-SNAPSHOT.jar
最后在Intellij中通过端口5005创建远程调试配置
spark-submit命令说它正在等待
Listening for transport dt_socket at address: 5005
但是当我运行远程调试时,Intellij说:
Error running 'RemoteTest': Unable to open debugger port (localhost:5005): java.io.IOException "handshake failed - connection prematurally closed"
我缺少任何配置吗?我已经在cloudera集群中做到了这一点,并且工作正常,但是我是AWS的新手,我想知道服务器端是否缺少某些东西
谢谢
答案 0 :(得分:1)
最后,我不需要ssh隧道。只需在EMR控制台->安全组->主群集->入站(对于我来说是5005)中打开“所有流量”的端口即可。
然后在您的intellij远程调试配置中,使用EMR IP更改“ localhost”。
就完成了。