作业驱动程序输出

您可以使用 gcloud命令行工具、Google Cloud ConsoleCloud Dataproc REST API 轻松地在 Cloud Dataproc 集群上提交、监控和控制作业。当您使用其中一种途径提交作业时,Cloud Dataproc 会自动收集作业的驱动程序(控制台)输出,然后向您提供该输出。这意味着,您可以快速查看驱动程序输出,而无需在作业运行时保持与集群的连接,或查看复杂的日志文件。

配置日志记录

默认情况下,Cloud Dataproc 为驱动程序使用默认的日志记录级别 WARN。使用命令行时,您可以调整此设置,从而使用 --driver-log-levels 选项提交作业。

特殊的 root 软件包可控制根日志记录器级别。例如:

gcloud dataproc jobs submit hadoop ...\
  --driver-log-levels root=FATAL,com.example=INFO

您可以为每个作业设置更加细化的日志记录级别。例如,为了协助调试从 Cloud Storage 中读取文件时发生的问题,您可以使用 --driver-log-levels 选项提交作业,并指定 DEBUG 日志级别,如下所示:

gcloud dataproc jobs submit hadoop ...\
  --driver-log-levels com.google.cloud.hadoop.gcsio=DEBUG

Spark 执行程序日志级别

您可以通过集群初始化操作在集群节点上设置 Spark 执行程序日志级别,集群初始化操作操作可以修改或替换 /etc/spark/conf/log4j.properties 文件(另请参阅 Apache Log4j 2)。

示例 /etc/spark/conf/log4j.properties 文件:

# Set everything to be logged to the console.
log4j.rootCategory=INFO, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c: %m%n

# Settings to quiet third party logs.
log4j.logger.org.eclipse.jetty=WARN
log4j.logger.org.eclipse.jetty.util.component.AbstractLifeCycle=ERROR
log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=INFO
log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=INFO

# Reduce verbosity for other core classes.
log4j.logger.org.apache.spark=WARN
log4j.logger.org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter=WARN
log4j.logger.org.apache.hadoop.conf.Configuration.deprecation=WARN
log4j.logger.org.spark-project.jetty.server.handler.ContextHandler=WARN

# Spark 2.0 specific output.
log4j.logger.org.spark_project.jetty.server.handler.ContextHandler=WARN.

其他开源组件具有类似的 log4j.properties 文件,您可以通过初始化操作修改或替换该文件来控制其日志输出。

访问作业驱动程序输出

您可以使用 Cloud Console、gcloud 命令行工具或 Cloud Storage 访问 Cloud Dataproc 作业驱动程序输出。

gcloud 命令

当您使用 gcloud dataproc jobs submit 命令提交作业时,作业的驱动程序输出将显示在 Console 中。通过将作业 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/
...

控制台

要查看作业驱动程序输出,请转到项目的 Dataproc 作业部分,然后点击作业 ID 以查看作业输出。

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

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
    ...