Dataproc 會收集下列叢集診斷資料,協助您排解叢集和工作問題:
查核點資料
啟用檢查點資料功能後,Dataproc 會在叢集建立、叢集更新和 Dataproc Jobs API 作業期間收集診斷資料。Dataproc 會將叢集 temp bucket
中的資料儲存在 Cloud Storage 中,保留時間為 90 天。保留期限結束時,系統會刪除資料。
啟用資料收集屬性: 您可以在建立叢集時,加入下列選用叢集屬性。 這些設定只會影響所建立叢集中的檢查點診斷資料收集作業。
- 啟用資料收集:設定
dataproc:diagnostic.capture.enabled=true
屬性,即可收集叢集中的檢查點診斷資料。 - 分享診斷資料:設定
dataproc:diagnostic.capture.access=GOOGLE_DATAPROC_DIAGNOSE
屬性,與Google Cloud 支援團隊分享收集到的檢查點診斷資料。- 建立叢集後,您可以將資料的讀取權授予支援團隊使用的服務帳戶,藉此與支援團隊分享診斷資料,步驟如下: Google Cloud Google Cloud
gcloud storage objects update \ gs://TEMP_BUCKET/google-cloud-dataproc-diagnostic/CLUSTER_UUID \ --add-acl-grant=entity=user-cloud-diagnose@cloud-dataproc.iam.gserviceaccount.com,role=READER --recursive \
- 建立叢集後,您可以將資料的讀取權授予支援團隊使用的服務帳戶,藉此與支援團隊分享診斷資料,步驟如下: Google Cloud Google Cloud
診斷資料
診斷資料包含寫入 Cloud Storage 的下列資料:gs://TEMP_BUCKET/google-cloud-dataproc-diagnostic/CLUSTER_UUID/
。本節將這個位置稱為「診斷資料夾」。
叢集節點詳細記錄:Dataproc 會執行下列指令,收集 YARN 和 HDFS 資訊,並寫入 Cloud Storage 中診斷資料夾的下列位置。
執行的指令 診斷資料夾中的位置 yarn node -list -all
.../nodes/timestamp/yarn-nodes.log
hdfs dfsadmin -report -live -decommissioning
.../nodes/timestamp/hdfs-nodes.log
工作詳細資料:Dataproc 會儲存使用 Dataproc Jobs API 的工作資訊,以及 MapReduce 工作和 Spark 工作記錄。系統會收集提交的每項 MR 和 Spark 工作資料。
- MapReduce
job.xml
:包含工作設定的檔案,儲存在.../jobs/JOB_UUID/mapreduce/job.xml
。 - Spark 事件記錄:有助於偵錯的工作執行作業詳細資料,儲存位置為
.../jobs/JOB_UUID/spark/application-id
。
- MapReduce
Linux 系統資訊:Dataproc 會執行下列指令,收集系統資訊並儲存在 Cloud Storage 診斷資料夾的下列位置。
指令 診斷資料夾中的位置 sysctl -a
.../system/sysctl.log
cat /proc/sys/fs/file-nr
.../system/fs-file-nr.log
ping -c 1
.../system/cluster-ping.log
cp /etc/hosts
.../system/hosts_entries.log
cp /etc/resolv.conf
.../system/resolv.conf
設定檔:Dataproc 會將下列設定檔儲存在 Cloud Storage 診斷資料夾的下列位置。
包含的項目 診斷資料夾中的位置 Dataproc 屬性 .../configs/dataproc/dataproc.properties
`/etc/google-dataproc/` 中的所有檔案.../configs/dataproc/
`/etc/hadoop/conf/` 中的所有檔案.../configs/hadoop/
`/etc/hive/conf/` 中的所有檔案 .../configs/hive/
`/etc/hive-hcatalog/conf/` 中的所有檔案.../configs/hive-hcatalog/
`/etc/knox/conf/` 中的所有檔案 .../configs/knox/
`/etc/pig/conf/` 中的所有檔案 .../configs/pig/
`/etc/presto/conf/` 中的所有檔案.../configs/presto/
`/etc/spark/conf/` 中的所有檔案.../configs/spark/
`/etc/tez/conf/` 中的所有檔案 .../configs/tez/
`/etc/zookeeper/conf/` 中的所有檔案.../configs/zookeeper/
快照資料
您可以執行下列
gcloud dataproc clusters diagnose
指令,從執行中的叢集收集診斷資料快照。資料會以封存 (tar) 檔案的形式,寫入 Cloud Storage 中的 Dataproc 暫存值區。
gcloud dataproc clusters diagnose CLUSTER_NAME \ --region=REGION \ --tarball-access=GOOGLE_DATAPROC_DIAGNOSE
注意:
- CLUSTER_NAME:要診斷的叢集名稱。
- REGION:叢集所在的區域,例如
us-central1
。 --tarball-access
=GOOGLE_DATAPROC_DIAGNOSE
這個標記可讓Google Cloud 支援人員存取診斷 tar 檔案。請提供診斷資訊 tar 檔案的 Cloud Storage 路徑,以取得 Google Cloud 支援。Additional flags:
--start-time
和--end-time
:同時使用這兩個標記,以%Y-%m-%dT%H:%M:%S.%fZ
格式指定收集診斷資料的時間範圍。指定時間範圍後,系統也會收集該時間範圍內的 Dataproc 自動調度資源記錄 (根據預設,診斷快照資料不會收集 Dataproc 自動調度資源記錄)。您可以使用下列任一或兩個標記,收集特定作業驅動程式、Spark 事件、YARN 應用程式和 Sparklens 輸出內容記錄:
--job-ids
:以半形逗號分隔的工作 ID 清單--yarn-application-ids
:以逗號分隔的 YARN 應用程式 ID 清單- 必須啟用 YARN 記錄匯總功能 (
yarn.log-aggregation-enable=true
),才能收集 YARN 應用程式記錄。 - 如果是 MapReduce 工作,系統只會收集 YARN 應用程式記錄。
- 必須啟用 YARN 記錄匯總功能 (
視需要執行診斷指令碼
如果叢集處於錯誤狀態,且無法接受 Dataproc 伺服器的診斷工作,gcloud dataproc clusters diagnose
指令可能會失敗或逾時。除了執行診斷指令,您也可以使用 SSH 連線至叢集主節點,下載診斷指令碼,然後在主節點上於本機執行該指令碼。
gcloud compute ssh HOSTNAME
gcloud storage cp gs://dataproc-diagnostic-scripts/diagnostic-script.sh .
sudo bash diagnostic-script.sh
診斷封存 tar 檔案會儲存在本機目錄中。指令輸出內容會列出 tar 檔案的位置,並說明如何將 tar 檔案上傳至 Cloud Storage bucket。
診斷快照資料
叢集快照資料包括診斷摘要和多個封存區段。
診斷摘要:封存檔案包含位於封存根目錄的 summary.txt
。這項功能會提供叢集狀態的總覽,包括 YARN、HDFS、磁碟和網路狀態,並顯示警告,提醒您注意潛在問題。
封存區段:封存檔案包含下列資訊,這些資訊會寫入下列封存檔案位置。
精靈和服務資訊
執行的指令 封存的位置 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_AGENTPID}"
jstack/agent${DATAPROC_AGENT_PID}.jstack
jstack -l "${PRESTOPID}"
jstack/agent${PRESTO_PID}.jstack
jstack -l "${JOB_DRIVERPID}"
jstack/driver${JOB_DRIVER_PID}.jstack
jinfo "${DATAPROC_AGENTPID}"
jinfo/agent${DATAPROC_AGENT_PID}.jstack
jinfo "${PRESTOPID}"
jinfo/agent${PRESTO_PID}.jstack
jinfo "${JOB_DRIVERPID}"
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
設定檔
包含的項目 封存的位置 VM 中繼資料 /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/
分享封存檔案
您可以與 Google Cloud 支援團隊或使用者共用封存檔案,以取得叢集或作業問題的疑難排解協助。
如要分享封存檔案,請按照下列步驟操作:
- 從 Cloud Storage 複製封存檔案,然後共用下載的封存,或
在封存上變更權限,允許其他使用者或專案存取檔案。 Google Cloud
範例:下列指令會將封存的讀取權限授予專案
test-project
的擁有者:gcloud storage objects update PATH_TO_ARCHIVE} --add-acl-grant=entity=project-owners-test-project,role=READER