Dataproc 作业输出和日志

当您提交 Dataproc 作业时,Dataproc 会自动收集作业输出,然后向您提供该输出。这意味着您可以 快速查看作业输出 连接到集群,或者查看复杂的日志 文件。

Spark 日志

Spark 日志有两种类型:Spark 驱动程序日志和 Spark 执行器日志。 Spark 驱动程序日志包含作业输出;Spark 执行器日志包含作业可执行文件或启动器输出,例如 spark-submit“已提交应用 xxx”消息,有助于调试作业失败问题。

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

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

  • cluster 模式:Spark 驱动程序在 YARN 容器中运行作业。Spark 驱动程序 Dataproc 作业驱动程序无法获取日志。

Dataproc 和 Spark 作业属性概览

属性 默认 说明
dataproc:dataproc.logging.stackdriver.job.driver.enable true 或 false false 必须在创建集群时进行设置。true 时, 作业驱动程序输出位于 Logging, 与作业资源相关联;当 false,作业驱动程序 输出不在 Logging 中。
注意:若要在 Logging 中启用作业驱动程序日志,还必须设置以下集群属性:dataproc:dataproc.logging.stackdriver.enable=truedataproc:jobs.file-backed-output.enable=true,这些属性会在创建集群时默认设置。
dataproc:dataproc.logging.stackdriver.job.yarn.container.enable true 或 false false 必须在创建集群时进行设置。 如果为 true,则系统会关联作业 YARN 容器日志 指定作业资源的名称当 false 时,作业 YARN 容器会记录日志 与集群资源相关联
spark:spark.submit.deployMode 客户端或集群 客户端 控制 Spark clientcluster 模式。

使用 Dataproc jobs API 提交的 Spark 作业

本部分中的表格列出了不同媒体资源设置对 提交作业时 Dataproc 作业驱动程序输出的目标位置 通过 Dataproc jobs API 来提交作业,其中包括通过 Google Cloud 控制台、gcloud CLI 和 Cloud 客户端库。

列出的 Dataproc 和 Spark 属性 可以在创建集群时使用 --properties 标志进行设置,并将应用于 集群上运行的所有 Spark 作业;您还可以使用 --properties 标志(不带“spark:”前缀) 提交到 Dataproc jobs API,并且仅适用于作业。

Dataproc 作业驱动程序输出

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

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

Spark 驱动程序日志

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

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

Spark Executor 日志

下表列出了不同属性设置对 Spark 执行器日志目的地的效果。

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

在不使用 Dataproc jobs API 的情况下提交的 Spark 作业

本部分列出了不同媒体资源设置对 提交作业时 Spark 作业日志的目标位置 不使用 Dataproc jobs API,例如在提交 使用 spark-submit 直接在集群节点上运行作业,或使用 Jupyter 或 Zeppelin 笔记本。这些作业没有 Dataproc 作业 ID 或驱动程序。

Spark 驱动程序日志

下表列出了不同属性设置对未通过 Dataproc jobs API 提交的作业的 Spark 驱动程序日志目的地的效果。

spark:
spark.submit.deployMode
驱动程序输出
客户端
  • 流式传输到客户端
  • 不在 Cloud Storage 中
  • 不在 Logging 中
集群
  • 未流式传输到客户端
  • 不在 Cloud Storage 中
  • 在 Logging yarn-userlogs 中集群资源下

Spark Executor 日志

如果 Spark 作业未通过 Dataproc jobs API 提交,则执行器 日志位于集群资源下的 Logging yarn-userlogs 中。

查看作业输出

您可以在 Google Cloud 控制台中访问 Dataproc 作业输出, gcloud CLI、Cloud Storage 或 Logging。

控制台

要查看作业输出,请转到您项目的 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 中, 暂存存储桶 或您在创建集群时指定的存储桶。指向 Cloud Storage 中的作业输出 Job.driverOutputResourceUri 字段返回:

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

日志记录

如需了解如何在 Logging 中查看 Dataproc 作业输出,请参阅 Dataproc 日志