如何调试 Dataproc 上的 Spark 作业?
How to debug a Spark job on Dataproc?
我在 Dataproc 集群上有一个 Spark 作业 运行。如何配置环境以使用我的 IDE?
在我的本地计算机上调试它
本教程假设如下:
- 您知道如何通过 API 调用、云 shell 命令或 Web UI
创建 GCP Dataproc 集群
- 您知道如何提交 Spark 作业
- 您有权启动作业、创建集群和使用 Compute Engine 实例
经过一些尝试,我发现了如何在本地计算机上调试集群上的 DataProc Spark 作业 运行。
您可能知道,您可以通过使用 Web UI、向 DataProc API 发送请求或使用 gcloud dataproc jobs submit spark
命令来提交 Spark 作业。无论哪种方式,您首先将以下键值对添加到 the properties field in the SparkJob:spark.driver.extraJavaOptions=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=REMOTE_PORT
,其中 REMOTE_PORT
是驱动程序将侦听的工作端口。
您的集群很可能位于专用网络上,您需要创建到 REMOTE_PORT 的 SSH 隧道。如果不是这种情况,那么您很幸运,您只需要使用 public IP 和 IDE.
上指定的 REMOTE_PORT 连接到 worker
使用 IntelliJ 会是这样的:
,
其中 worker-ip 是正在监听的 worker(我这次使用 9094 作为端口)。尝试了几次后,我发现它总是 worker 号 0,但是你可以连接到它并检查是否有进程 运行 使用 netstat -tulnp | grep REMOTE_PORT
如果出于某种原因您的集群没有 public IP,您需要设置一个从本地计算机到 worker 的 SSH 隧道。在指定你的 ZONE 和 PROJECT 后,你创建一个通往 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
我在 Dataproc 集群上有一个 Spark 作业 运行。如何配置环境以使用我的 IDE?
在我的本地计算机上调试它本教程假设如下:
- 您知道如何通过 API 调用、云 shell 命令或 Web UI 创建 GCP Dataproc 集群
- 您知道如何提交 Spark 作业
- 您有权启动作业、创建集群和使用 Compute Engine 实例
经过一些尝试,我发现了如何在本地计算机上调试集群上的 DataProc Spark 作业 运行。
您可能知道,您可以通过使用 Web UI、向 DataProc API 发送请求或使用 gcloud dataproc jobs submit spark
命令来提交 Spark 作业。无论哪种方式,您首先将以下键值对添加到 the properties field in the SparkJob:spark.driver.extraJavaOptions=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=REMOTE_PORT
,其中 REMOTE_PORT
是驱动程序将侦听的工作端口。
您的集群很可能位于专用网络上,您需要创建到 REMOTE_PORT 的 SSH 隧道。如果不是这种情况,那么您很幸运,您只需要使用 public IP 和 IDE.
上指定的 REMOTE_PORT 连接到 worker使用 IntelliJ 会是这样的:
其中 worker-ip 是正在监听的 worker(我这次使用 9094 作为端口)。尝试了几次后,我发现它总是 worker 号 0,但是你可以连接到它并检查是否有进程 运行 使用 netstat -tulnp | grep REMOTE_PORT
如果出于某种原因您的集群没有 public IP,您需要设置一个从本地计算机到 worker 的 SSH 隧道。在指定你的 ZONE 和 PROJECT 后,你创建一个通往 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