我在Dataproc集群上运行了一个Spark作业。如何配置环境,以便使用IDE在本地计算机上调试它?
发布于 2020-07-23 02:37:37
本教程假设如下:
经过几次尝试,我发现了如何在本地计算机上调试运行在集群上的DataProc Spark作业。
正如您可能知道的,您可以通过使用Web、向DataProc API发送请求或使用gcloud dataproc jobs submit spark
命令来提交火花作业。无论以哪种方式,您都可以从向SparkJob中的属性字段添加以下键值对开始:spark.driver.extraJavaOptions=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=REMOTE_PORT
,其中REMOTE_PORT
是驱动程序将侦听的工作程序上的端口。
您的集群可能位于专用网络上,您需要为REMOTE_PORT创建一个SSH隧道。如果不是这样的话,那么您就很幸运了,您只需要使用您的IDE上的公共IP和指定的REMOTE_PORT连接到工作人员。
使用IntelliJ将如下所示:
,
其中worker-ip是正在侦听的工作者(这次我使用了9094作为端口)。经过几次尝试,我意识到它始终是工作号0,但是您可以连接到它,并检查是否有使用netstat -tulnp | grep REMOTE_PORT
运行的进程
如果由于任何原因,您的集群没有公共IP,则需要从本地计算机向工作人员设置SSH隧道。在指定区域和项目之后,您将创建一个通往REMOTE_PORT的隧道:
gcloud compute ssh CLUSTER_NAME-w-0 --project=$PROJECT --zone=$ZONE -- -4 -N -L LOCAL_PORT:CLUSTER_NAME-w-0:REMOTE_PORT
并在IDE上设置调试配置,指向host=localhost/127.0.0.1
和port=LOCAL_PORT
。
https://stackoverflow.com/questions/63052302
复制