您可以在 Cloud Logging 中查看、搜索、过滤和归档 Dataproc 作业和集群日志。
如需了解费用,请参阅 Google Cloud Observability 价格。
如需了解日志保留,请参阅日志保留期限。
如需停用所有日志或从 Logging 中排除日志,请参阅日志排除。
如需将日志从 Logging 路由到 Cloud Storage、BigQuery 或 Pub/Sub,请参阅路由和存储概览。
组件日志记录级别
在创建集群时,使用特定于组件的 Log4j 集群属性(例如 hadoop-log4j
)设置 Spark、Hadoop、Flink 和其他 Dataproc 组件日志记录级别。基于集群的组件日志记录级别适用于服务守护程序(例如 YARN ResourceManager)以及在集群上运行的作业。
如果组件(例如 Presto 组件)不支持 log4j 属性,请编写用于修改组件的 log4j.properties
或 log4j2.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 执行程序日志记录级别,请执行以下操作:
准备 log4j 配置文件,然后将其上传到 Cloud Storage
。在提交作业时引用您的配置文件。
示例:
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 存储数据的密钥。