Dataproc 日志

您可以在 Cloud Logging 中查看、搜索、过滤和归档 Dataproc 作业和集群日志。

组件日志记录级别

创建集群时,使用特定于组件的 Log4j 集群属性(例如 hadoop-log4j)设置 Spark、Hadoop、Flink 和其他 Dataproc 组件日志记录级别。基于集群的组件日志记录级别适用于服务守护程序(例如 YARN ResourceManager)以及在集群上运行的作业。

如果组件(例如 Presto 组件)不支持 log4j 属性,请编写用于修改组件的 log4j.propertieslog4j2.properties 文件的初始化操作

作业专用组件日志记录级别:您还可以在提交作业时设置组件日志记录级别。这些日志记录级别会应用于作业,并且优先于您在创建集群时设置的日志记录级别。如需了解详情,请参阅集群属性与作业属性

Spark 和 Hive 组件版本日志记录级别

Spark 3.3.X 和 Hive 3.X 组件使用 log4j2 属性,而这些组件的早期版本使用 log4j 属性(请参阅 Apache Log4j2)。使用 spark-log4j: 前缀在集群上设置 Spark 日志记录级别。

  • 示例:Dataproc 映像版本 2.0 搭配 Spark 3.1 设置 log4j.logger.org.apache.spark

    gcloud dataproc clusters create ... \
        --properties spark-log4j:log4j.logger.org.apache.spark=DEBUG
    
  • 示例:Dataproc 映像版本 2.1 搭配 Spark 3.3 来设置 logger.sparkRoot.level

    gcloud dataproc clusters create ...\
        --properties spark-log4j:logger.sparkRoot.level=debug
    

作业驱动程序日志记录级别

Dataproc 为作业驱动程序使用默认的日志记录级别 INFO。您可以使用 gcloud dataproc jobs submit --driver-log-levels 标志为一个或多个软件包更改此设置。

示例:

提交用于读取 Cloud Storage 文件的 Spark 作业时,请设置 DEBUG 日志记录级别。

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

示例:

root 日志记录器级别设置为 WARN,将 com.example 日志记录器级别设置为 INFO

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

Spark 执行程序日志记录级别

如需配置 Spark 执行程序日志记录级别,请执行以下操作:

  1. 准备 log4j 配置文件,然后将其上传到 Cloud Storage

  2. 在提交作业时引用您的配置文件。

    示例:

    gcloud dataproc jobs submit spark ...\
        --file gs://my-bucket/path/spark-log4j.properties \
        --properties spark.executor.extraJavaOptions=-Dlog4j.configuration=file:spark-log4j.properties
    

Spark 会将 Cloud Storage 属性文件下载到作业的本地工作目录(在 -Dlog4j.configuration 中引用为 file:<name>)。

Logging 中的 Dataproc 作业日志

如需了解如何在 Logging 中启用 Dataproc 作业驱动程序日志,请参阅 Dataproc 作业输出和日志

访问 Logging 中的作业日志

使用日志浏览器gcloud logging 命令或 Logging API 访问 Dataproc 作业日志。

控制台

Dataproc 作业驱动程序日志和 YARN 容器日志列在 Cloud Dataproc 作业资源下。

示例:使用以下选择运行日志浏览器查询后,任务驱动程序日志:

  • 资源Cloud Dataproc Job
  • 日志名称dataproc.job.driver

示例:使用以下选择运行日志浏览器查询后生成的 YARN 容器日志:

  • 资源Cloud Dataproc Job
  • 日志名称dataproc.job.yarn.container

gcloud

您可以使用 gcloud logging read 命令来读取作业日志条目。资源参数必须括在英文引号 ("...") 中。 以下命令使用集群标签来过滤返回的日志条目。

gcloud logging read \
    "resource.type=cloud_dataproc_job \
    resource.labels.region=cluster-region \
    resource.labels.job_id=my-job-id"

示例输出(部分):

jsonPayload:
  class: org.apache.hadoop.hdfs.StateChange
  filename: hadoop-hdfs-namenode-test-dataproc-resize-cluster-20190410-38an-m-0.log
  ,,,
logName: projects/project-id/logs/hadoop-hdfs-namenode
---
jsonPayload:
  class: SecurityLogger.org.apache.hadoop.security.authorize.ServiceAuthorizationManager
  filename: cluster-name-dataproc-resize-cluster-20190410-38an-m-0.log
  ...
logName: projects/google.com:hadoop-cloud-dev/logs/hadoop-hdfs-namenode

REST API

您可以使用 Logging REST API 列出日志条目(请参阅 entries.list)。

Logging 中的 Dataproc 集群日志

Dataproc 会将以下 Apache Hadoop、Spark、Hive、Zookeeper 和其他 Dataproc 集群日志导出到 Cloud Logging。

日志类型 日志名称 说明
主守护进程日志 hadoop-hdfs
hadoop-hdfs-namenode
hadoop-hdfs-secondary namenode
hadoop-hdfs-zkfc
hadoop-yarn-resourcemanager
hadoop-yarn-timelineserver
hive-metastore
hive-server2
mapred-mapred-historyserver
zookeeper
日志节点
HDFS 名称节点
HDFS 辅助名称节点
Zookeeper 故障切换控制器
YARN 资源管理器
YARN Timeline Server
Hive Metastore
Hive server2
MapReduce 作业历史记录服务器
Zookeeper 服务器
工作器守护进程日志 hadoop-hdfs-datanode
hadoop-yarn-nodemanager
HDFS 数据节点
YARN 节点管理器
系统日志 autoscaler
google.dataproc.agent
google.dataproc.startup
Dataproc 自动调节程序日志
Dataproc 代理日志
Dataproc 启动脚本日志 + 初始化操作日志

访问 Cloud Logging 中的集群日志

您可以使用日志浏览器gcloud logging 命令或 Logging API 来访问 Dataproc 集群日志。

控制台

进行以下查询选择,即可在日志浏览器中查看集群日志:

  • 资源Cloud Dataproc Cluster
  • 日志名称log name

gcloud

您可以使用 gcloud logging read 命令来读取集群日志条目。资源参数必须括在英文引号 ("...") 中。 以下命令使用集群标签来过滤返回的日志条目。

gcloud logging read <<'EOF'
    "resource.type=cloud_dataproc_cluster
    resource.labels.region=cluster-region
    resource.labels.cluster_name=cluster-name
    resource.labels.cluster_uuid=cluster-uuid"
EOF

示例输出(部分):

jsonPayload:
  class: org.apache.hadoop.yarn.server.resourcemanager.ResourceTrackerService
  filename: hadoop-yarn-resourcemanager-cluster-name-m.log
  ...
logName: projects/project-id/logs/hadoop-yarn-resourcemanager
---
jsonPayload:
  class: org.apache.hadoop.yarn.server.resourcemanager.ResourceTrackerService
  filename: hadoop-yarn-resourcemanager-component-gateway-cluster-m.log
  ...
logName: projects/project-id/logs/hadoop-yarn-resourcemanager

REST API

您可以使用 Logging REST API 列出日志条目(请参阅 entries.list)。

权限

要将日志写入 Logging,Dataproc 虚拟机服务账号必须具有 logging.logWriter 角色 IAM 角色。默认 Dataproc 服务账号具有此角色。如果使用自定义服务账号,则您必须将此角色分配给该服务账号。

保护日志

默认情况下,Logging 中的日志会在静态存储时进行加密。您可以启用客户管理的加密密钥 (CMEK) 来加密日志。如需详细了解 CMEK 支持,请参阅管理用于保护日志路由器数据的密钥管理用于保护 Logging 存储数据的密钥

后续步骤