您可以运行 gcloud dataproc clusters diagnose
命令来收集系统、Spark、Hadoop 和 Dataproc 日志、集群配置文件,以及您可以检查或与 Google 支持团队共享的其他信息,以帮助对 Dataproc 集群或作业进行问题排查。该命令将诊断数据和摘要上传到 Cloud Storage 中的 Dataproc 暂存存储桶。
运行 Google Cloud CLI diagnose cluster 命令
运行 gcloud dataproc clusters diagnose
命令以创建并输出诊断归档文件的位置。
gcloud dataproc clusters diagnose CLUSTER_NAME \ --region=REGION \ OPTIONAL FLAGS ...
备注:
- CLUSTER_NAME:要诊断的集群的名称。
- REGION:集群的区域,例如
us-central1
。 OPTIONAL FLAGS:
--job-ids
:除了默认日志文件之外,您还可以为指定的作业 ID 列表收集作业驱动程序、Spark 事件、YARN 应用和 Spark 智能镜头输出日志。对于 MapReduce 作业,仅收集 YARN 应用日志。必须为收集 YARN 应用日志启用 YARN 日志汇总。--yarn-application-ids
:除了默认日志文件之外,您还可以为指定的 YARN 应用 ID 列表收集作业驱动程序、Spark 事件、YARN 应用和 Spark 智能镜头输出日志。必须为收集 YARN 应用日志启用 YARN 日志聚合。将
--start-time
与--end-time
搭配使用:使用这两个标志以%Y-%m-%dT%H:%M:%S.%fZ
格式指定诊断数据的收集时间范围。指定时间范围还会启用在相应时间范围内收集 Dataproc 自动扩缩日志(默认情况下,诊断数据中不会收集 Dataproc 自动扩缩日志)。--tarball-access
=GOOGLE_DATAPROC_DIAGNOSE
使用此标记向 Google Cloud 支持团队提交或提供对诊断 tar 文件的访问权限。还要向 Google Cloud 支持团队提供如下信息:- 诊断 tar 文件的 Cloud Storage 路径,或
- 集群配置存储桶、集群 UUID 以及诊断命令的操作 ID
从集群主服务器节点运行诊断脚本(如果需要)
如果集群处于错误状态并且无法接受来自 Dataproc 服务器的诊断任务,则 gcloud dataproc clusters diagnose
命令可能会失败或超时。作为运行 diagnose 命令的替代方法,您可以使用 SSH 连接到集群主服务器节点,下载诊断脚本,然后在主节点本地运行该脚本。
gcloud compute ssh HOSTNAME
gsutil cp gs://dataproc-diagnostic-scripts/diagnostic-script.sh .
sudo bash diagnostic-script.sh
诊断归档 tar 文件保存在本地目录中。命令输出列出了 tar 文件的位置,其中包含有关如何将 tar 文件上传到 Cloud Storage 存储桶的说明。
如何分享诊断数据
如需分享归档文件,请执行以下操作:
- 从 Cloud Storage 下载归档文件,然后共享下载的归档文件,或者
- 更改对归档文件的权限,以允许其他 Google Cloud 用户或项目访问该文件。
示例:以下命令会在 test-project
中添加对归档文件的读取权限:
gsutil -m acl ch -g test-project:R PATH_TO_ARCHIVE}
诊断摘要和归档内容
diagnose
命令会输出一个诊断摘要和一个归档文件 tar 文件,其中包含集群配置文件、日志以及其他文件和信息。归档文件 tar 文件会写入 Cloud Storage 中的 Dataproc 暂存存储桶。
诊断摘要:诊断脚本会分析收集的数据,并在诊断归档的根目录下生成 summary.txt
。此摘要概述了集群状态(包括 YARN、HDFS、磁盘和网络状态),并包含用于提醒您潜在问题的警告。
归档 tar 文件:以下部分列出了诊断归档 tar 文件中包含的文件和信息。
守护程序和服务信息
执行的命令 | 在归档文件中的位置 |
---|---|
yarn node -list -all |
/system/yarn-nodes.log |
hdfs dfsadmin -report -live -decommissioning |
/system/hdfs-nodes.log |
hdfs dfs -du -h |
/system/hdfs-du.log |
service --status-all |
/system/service.log |
systemctl --type service |
/system/systemd-services.log |
curl "http://${HOSTNAME}:8088/jmx" |
/metrics/resource_manager_jmx |
curl "http://${HOSTNAME}:8088/ws/v1/cluster/apps" |
/metrics/yarn_app_info |
curl "http://${HOSTNAME}:8088/ws/v1/cluster/nodes" |
/metrics/yarn_node_info |
curl "http://${HOSTNAME}:9870/jmx" |
/metrics/namenode_jmx |
JVM 信息
执行的命令 | 在归档文件中的位置 |
---|---|
jstack -l "${DATAPROC_AGENT_PID}" |
jstack/agent_${DATAPROC_AGENT_PID}.jstack |
jstack -l "${PRESTO_PID}" |
jstack/agent_${PRESTO_PID}.jstack |
jstack -l "${JOB_DRIVER_PID}" |
jstack/driver_${JOB_DRIVER_PID}.jstack |
jinfo "${DATAPROC_AGENT_PID}" |
jinfo/agent_${DATAPROC_AGENT_PID}.jstack |
jinfo "${PRESTO_PID}" |
jinfo/agent_${PRESTO_PID}.jstack |
jinfo "${JOB_DRIVER_PID}" |
jinfo/agent_${JOB_DRIVER_PID}.jstack |
Linux 系统信息
执行的命令 | 在归档文件中的位置 |
---|---|
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 中文件名中包含以下前缀的所有日志:cloud-sql-proxy dataproc druid gcdp google hadoop hdfs hive knox presto spark syslog yarn zookeeper |
文件位于归档文件的 logs 文件夹中,并保留其原始文件名。 |
集群中每个节点(主节点和工作器节点)的 Dataproc 节点启动日志。 | 文件位于归档文件的 node_startup 文件夹中,该文件夹包含集群中每台机器对应的单独子文件夹。 |
来自 journalctl -u google-dataproc-component-gateway 的组件网关日志 |
/logs/google-dataproc-component-gateway.log |
配置文件
包含的内容 | 在归档文件中的位置 |
---|---|
虚拟机元数据 | /conf/dataproc/metadata |
/etc/environment 中的环境变量 |
/conf/dataproc/environment |
Dataproc 属性 | /conf/dataproc/dataproc.properties |
/etc/google-dataproc/ 中的所有文件 |
/conf/dataproc/ |
/etc/hadoop/conf/ 中的所有文件 |
/conf/hadoop/ |
/etc/hive/conf/ 中的所有文件 |
/conf/hive/ |
/etc/hive-hcatalog/conf/ 中的所有文件 |
/conf/hive-hcatalog/ |
/etc/knox/conf/ 中的所有文件 |
/conf/knox/ |
/etc/pig/conf/ 中的所有文件 |
/conf/pig/ |
/etc/presto/conf/ 中的所有文件 |
/conf/presto/ |
/etc/spark/conf/ 中的所有文件 |
/conf/spark/ |
/etc/tez/conf/ 中的所有文件 |
/conf/tez/ |
/etc/zookeeper/conf/ 中的所有文件 |
/conf/zookeeper/ |