Dataproc 作业驱动程序输出

当您提交 Dataproc 作业时,Dataproc 会自动收集作业输出,并为您提供该作业。这意味着您可以在作业运行时快速查看作业输出,而无需与集群保持连接,或者查看复杂的日志文件。

Spark 作业输出选项

Dataproc 作业驱动程序是许多作业类型的启动器。启动 Spark 作业时,它会作为底层 spark-submit 可执行文件的封装容器运行,以启动 Spark 驱动程序。Spark 驱动程序在 clientcluster 模式的 Dataproc 集群中运行作业:

  • client 模式:Spark 驱动程序在 spark-submit 进程中运行作业,而 Spark 日志会发送到 Dataproc 作业驱动程序。

  • cluster 模式:Spark 驱动程序在 YARN 容器中运行作业。Spark 驱动程序日志不适用于 Dataproc 作业驱动程序,并且仅包含 spark-submit 日志(例如,“Submitted application xxx"”)。Spark 驱动程序输出和执行程序日志包含在 YARN 容器日志中。

下表列出了影响 Dataproc 作业驱动程序和 Spark 作业输出目标的 Dataproc 和 Spark 属性。创建集群时,可以使用 --properties 标志设置列出的 Dataproc 和 Spark 属性,并且该设置将应用于集群上运行的所有 Spark 作业;您也可以在提交作业时使用 --properties 标志(不带 "spark:" 前缀)进行设置,并且该属性仅适用于作业。

属性 价值 默认 说明
dataproc:dataproc.logging.stackdriver.job.driver.enable true 或 false false 如果为 true,作业驱动程序输出在 Logging 中,与作业资源关联;当 false 时,作业驱动程序输出不在 Logging 中。
dataproc:dataproc.logging.stackdriver.job.yarn.container.enable true 或 false false 如果为 true,则作业 YARN 容器日志与作业资源相关联;当 false 时,作业 YARN 容器日志与集群资源相关联。
spark:spark.submit.deployMode 客户端或集群 client 控制 Spark clientcluster 模式。

Dataproc 作业驱动程序输出

下表列出了不同属性设置对 Dataproc 作业驱动程序输出的目标位置的影响。

dataproc:
dataproc.logging.stackdriver.job.driver.enable
输出
false(默认)
  • 流式传输到客户端
  • 在 Cloud Storage 中,由 Dataproc 生成的 driverOutputResourceUri
  • 未记录在案
true
  • 流式传输到客户端
  • 在 Cloud Storage 中,由 Dataproc 生成的 driverOutputResourceUri
  • 在 Logging 中:作业资源下的 dataproc.job.driver

Spark 驱动程序输出

下表列出了不同属性设置对 Spark 驱动程序输出的目标位置的影响。

spark:
spark.submit.deployMode
dataproc:
dataproc.logging.stackdriver.job.driver.enable
驱动程序输出
client false(默认)
  • 流式传输到客户端
  • 在 Cloud Storage 中,由 Dataproc 生成的 driverOutputResourceUri
  • 未记录在案
client true
  • 流式传输到客户端
  • 在 Cloud Storage 中,由 Dataproc 生成的 driverOutputResourceUri
  • 在 Logging 中:作业资源下的 dataproc.job.driver
集群 false(默认)
  • 未流式传输到客户端
  • 不在 Cloud Storage 中
  • 在 Logging yarn-userlogs 中的集群资源下
集群 true
  • 未流式传输到客户端
  • 不在 Cloud Storage 中
  • 在 Logging 中:作业资源下的 dataproc.job.yarn.container

Spark 执行程序输出

下表列出了不同属性设置对 Spark 执行程序输出的影响。

dataproc:
dataproc.logging.stackdriver.job.yarn.container.enable
执行器输出
false(默认) 在 Logging 中:集群资源下的 yarn-userlogs
true 在 Logging dataproc.job.yarn.container 中的作业资源下

查看作业输出

您可以使用 Cloud Console、gcloud CLI 或 Cloud Storage 访问 Dataproc 作业驱动程序输出。

控制台

如需查看作业输出,请转到项目的 Dataproc 作业部分,然后点击作业 ID 以查看作业输出。

如果作业正在运行,则作业输出会定期刷新以显示新内容。

gcloud 命令

当您使用 gcloud dataproc jobs submit 命令提交作业时,作业输出会显示在控制台中。通过将作业 ID 传递给 gcloud dataproc jobs wait 命令,您可以在稍后的时间、在其他计算机上或在新窗口中“重新加入”输出。作业 ID 是 GUID,例如 5c1754a5-34f7-4553-b667-8a1199cb9cab。示例如下:

gcloud dataproc jobs wait 5c1754a5-34f7-4553-b667-8a1199cb9cab \
    --project my-project-id --region my-cluster-region
Waiting for job output...
... INFO gcs.GoogleHadoopFileSystemBase: GHFS version: 1.4.2-hadoop2
... 16:47:45 INFO client.RMProxy: Connecting to ResourceManager at my-test-cluster-m/
...

Cloud Storage

作业输出存储在 Cloud Storage 中的暂存存储分区或创建集群时指定的存储分区中。以下项返回的 Job.driverOutputResourceUri 字段中提供 Cloud Storage 中的作业输出链接:

  • jobs.get API 请求。
  • gcloud dataproc jobs describe job-id 命令。
    $ gcloud dataproc jobs describe spark-pi
    ...
    driverOutputResourceUri: gs://dataproc-nnn/jobs/spark-pi/driveroutput
    ...