Dataproc 記錄

您可以在 Cloud Logging 中查看、搜尋、篩選及封存 Dataproc 工作和叢集記錄檔。

元件記錄層級

建立叢集時,可以使用元件專屬的 log4j 叢集屬性 (例如 hadoop-log4j) 來設定 Spark、Hadoop、Flink 和其他 Dataproc 元件的記錄層級。基於叢集的元件記錄層級適用於服務 Daemon (例如 YARN ResourceManager) 以及在叢集上執行的工作。

如果元件 (例如 Presto 元件) 不支援 log4j 屬性,請編寫初始化動作以編輯元件的 log4j.propertieslog4j2.properties 檔案。

工作專屬的元件記錄層級:您也可以在提交工作時設定元件記錄層級。這些記錄層級會套用至工作,且優先於建立叢集時設定的記錄層級。詳情請參閱「叢集與工作屬性」。

Spark 和 Hive 元件版本記錄層級:

Spark 3.3.X 和 Hive 3.X 元件使用 log4j2 屬性,而這些元件的舊版則使用 log4j 屬性 (請參閱 Apache Log4j2)。設定叢集的 Spark 記錄層級時,請使用 spark-log4j: 前置字元。

  • 範例: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 執行器記錄層級,請按照下列步驟操作:

  1. 準備 log4j 設定檔,然後上傳至 Cloud Storage

  2. 提交工作時,請參照設定檔。

    範例:

    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 中存取工作記錄檔

要存取 Dataproc 工作記錄檔,可以使用 Logs Explorergcloud logging 指令或 Logging API

控制台

Dataproc 工作驅動程式和 YARN 容器記錄檔列於「Cloud Dataproc Job」(Cloud Dataproc 工作) 資源下方。

範例:執行 Logs Explorer 查詢後的工作驅動程式記錄檔,選取下列項目:

  • 資源: Cloud Dataproc Job
  • 記錄檔名稱: dataproc.job.driver

範例:執行 Logs Explorer 查詢後的 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。

記錄檔類型 記錄檔名稱 說明 附註
主要執行個體 Daemon 記錄 hadoop-hdfs
hadoop-hdfs-namenode
hadoop-hdfs-secondarynamenode
hadoop-hdfs-zkfc
hadoop-yarn-resourcemanager
hadoop-yarn-timelineserver
hive-metastore
hive-server2
hadoop-mapred-historyserver
zookeeper
日誌節點
HDFS namenode
HDFS secondary namenode
Zookeeper 容錯移轉控制器
YARN Resource Manager
YARN 時間軸伺服器
Hive metastore
Hive server2
Mapreduce 工作歷史記錄伺服器
Zookeeper 伺服器
Worker Daemon 記錄檔 hadoop-hdfs-datanode
hadoop-yarn-nodemanager
HDFS datanode
YARN nodemanager
系統記錄檔 autoscaler
google.dataproc.agent
google.dataproc.startup
Dataproc 自動配置器記錄檔
Dataproc 代理程式記錄檔
Dataproc 開機指令碼記錄檔 + 初始化動作記錄檔
擴充 (額外) 記錄檔 knox
gateway-audit
zeppelin
ranger-usersync
jupyter_notebook
jupyter_kernel_gateway
spark-history-server
/var/log/ 子目錄中所有符合下列條件的記錄:
knox (含 gateway-audit.log)
zeppelin
ranger-usersync
jupyter_notebook
jupyter_kernel_gateway
spark-history-server
設定 dataproc:dataproc.logging.extended.enabled=false 屬性會停用叢集上的擴充記錄檔收集功能
VM syslog syslog
叢集主要節點和 worker 節點中的 syslog
設定 dataproc:dataproc.logging.syslog.enabled=false 屬性會停用叢集上的 VM syslog 收集功能

在 Cloud Logging 中存取叢集記錄

要存取 Dataproc 叢集記錄,可以使用 Logs Explorergcloud logging 指令或 Logging API

控制台

在 Logs Explorer 中查看叢集日誌時,請選取下列查詢條件:

  • 資源: 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)。

權限

如要將記錄檔寫入 Cloud Logging,Dataproc VM 服務帳戶必須具備 logging.logWriter 身分與存取權管理角色。預設的 Dataproc 服務帳戶已具備此角色。如果您使用自訂服務帳戶,請務必將該角色指派給服務帳戶。

保護記錄檔

根據預設,Logging 中的記錄檔會經過靜態資料加密處理。您可以啟用客戶自行管理的加密金鑰 (CMEK) 來加密記錄檔。有關 CMEK 支援的詳細資訊請參閱「管理記錄檔路由器資料的保護金鑰」和「管理記錄儲存空間資料的保護金鑰」。

後續步驟