作业驱动程序输出

您可以使用 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、Hadoop、Flink 和其他 OSS 组件执行程序日志级别,该操作可修改或替换 .../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.

访问作业驱动程序输出

您可以使用 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
    ...