诊断 Dataproc 集群

查看日志和配置信息对于排查集群或作业的问题很有用。遗憾的是,日志和配置文件太多了,并且收集每个文件以进行调查可能非常耗时。为了解决此问题,Cloud Dataproc 集群通过 Cloud SDK 支持特殊的 diagnose 命令。此命令会收集并归档重要系统、Spark/Hadoop 和 Cloud Dataproc 日志,然后将归档文件上传至挂接到集群的 Cloud Storage 存储分区。

使用 diagnose 命令

您可以在 Cloud Dataproc 集群上使用 Cloud SDK diagnose命令(请参阅 Dataproc 和 Cloud SDK)。

安装并配置 Cloud SDK 后,您可以在集群上运行 gcloud dataproc clusters diagnose 命令,如下所示。将 cluster-name 替换为您的集群名称,并将 region 替换为您的集群的区域,例如 --region=us-central1

gcloud dataproc clusters diagnose cluster-name \
    --region=region \
    ... other args ...

该命令会输出包含您的数据的归档文件的名称和位置。

...
Saving archive to cloud
Copying file:///tmp/tmp.FgWEq3f2DJ/diagnostic.tar ...
Uploading   ...23db9-762e-4593-8a5a-f4abd75527e6/diagnostic.tar ...
Diagnostic results saved in:
gs://bucket-name/.../cluster-uuid/.../job-id/diagnostic.tar
    ...
在此示例中,bucket-name 是挂接到您的集群的 Cloud Storage 存储分区,cluster-uuid 是集群的唯一 ID (UUID),job-id 是属于运行 diagnose 命令的系统任务的 UUID。

当您创建 Cloud Dataproc 集群时,Cloud Dataproc 会自动创建 Cloud Storage 存储分区并将其挂接到您的集群。diagnose 命令会将归档文件输出到此存储分区。如需确定由 Cloud Dataproc 创建的存储分区的名称,请使用 Cloud SDK clusters describe 命令。configurationBucket 旁边列出了与您的集群关联的存储分区。

gcloud dataproc clusters describe cluster-name \
    --region=region \
...
  clusterName: cluster-name
  clusterUuid: daa40b3f-5ff5-4e89-9bf1-bcbfec6e0eac
  configuration:
  configurationBucket: dataproc-edc9d85f-...-us
  ...

共享 diagnose 命令收集的数据

您可以通过以下两种方式共享 diagnose 命令生成的归档文件:

  1. 从 Cloud Storage 下载文件,然后共享下载的归档文件。
  2. 更改对归档文件的权限,以允许其他 Google Cloud Platform 用户或项目访问该文件。

例如,以下命令会添加对 test-project 中诊断归档文件的读取权限:

gsutil -m acl ch -g test-project:R path-to-archive

diagnose 命令输出中包含的内容

diagnose 命令会将集群的以下配置文件、日志和输出包含在归档文件中。如上所述,归档文件位于您的 Cloud Dataproc 集群所关联的 Cloud Storage 存储分区中。

守护进程和状态信息

执行的命令 在归档文件中的位置
yarn node -list -all /system/yarn-nodes.log
hdfs dfsadmin -report -live -decommissioning /system/hdfs-nodes.log
service --status-all /system/service.log
df -h /system/df.log
ps aux /system/ps.log
free -m /system/free.log
netstat -anp /system/netstat.log
sysctl -a /system/sysctl.log
uptime /system/uptime.log
cat /proc/sys/fs/file-nr /system/fs-file-nr.log
ping -c 1 /system/cluster-ping.log

日志文件

包含的内容 在归档文件中的位置
/var/log 中所有日志的文件名中都包含以下前缀:
gcs
google
gcdp
hadoop
hdfs
hive
spark
syslog
yarn
文件位于归档文件的 logs 文件夹中,并保留其原始文件名。
集群中每个节点(主节点和工作器节点)的 Cloud Dataproc 节点启动日志。 文件位于归档文件的 node_startup 文件夹中,该文件夹包含集群中每台机器对应的单独子文件夹。

配置文件

包含的内容 在归档文件中的位置
/etc/hadoop/conf/ 中的所有文件 文件位于归档文件的 hadoop_conf 文件夹中,并保留其原始文件名。