查看 Dataproc 叢集的診斷資料

「查看 Dataproc 叢集診斷資料」

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 \
      

診斷資料

診斷資料包含寫入 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
  • 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 應用程式記錄。

視需要執行診斷指令碼

如果叢集處於錯誤狀態,且無法接受 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