您可以在 Cloud Logging 中查看、搜尋、篩選及封存 Managed Service for Apache Spark 工作和叢集記錄檔。
請參閱 Google Cloud Observability 定價瞭解相關費用。
如需瞭解記錄保留期限,請參閱「記錄檔保留期限」一文。
如要停用所有記錄檔或從 Logging 排除記錄檔,請參閱「記錄檔排除」。
如要將記錄檔從 Cloud Logging 傳送至 Cloud Storage、BigQuery 或 Pub/Sub,請參閱「轉送和儲存空間簡介」。
元件記錄層級
建立叢集時,可以使用元件專屬的 log4j 叢集屬性 (例如 hadoop-log4j) 來設定 Spark、Hadoop、Flink 和其他 Managed Service for Apache Spark 元件的記錄層級。基於叢集的元件記錄層級適用於服務 Daemon (例如 YARN ResourceManager) 以及在叢集上執行的工作。
如果元件 (例如 Presto 元件) 不支援 log4j 屬性,請編寫初始化動作以編輯元件的 log4j.properties 或 log4j2.properties 檔案。
工作專屬的元件記錄層級:您也可以在提交工作時設定元件記錄層級。這些記錄層級會套用至工作,且優先於建立叢集時設定的記錄層級。詳情請參閱「叢集與工作屬性」。
Spark 和 Hive 元件版本記錄層級:
Spark 3.3.X 和 Hive 3.X 元件使用 log4j2 屬性,而這些元件的舊版則使用 log4j 屬性 (請參閱 Apache Log4j2)。設定叢集的 Spark 記錄層級時,請使用 spark-log4j: 前置字元。
範例:Managed Service for Apache Spark 映像檔版本 2.0 搭配 Spark 3.1,用於設定
log4j.logger.org.apache.spark:gcloud dataproc clusters create ... \ --properties spark-log4j:log4j.logger.org.apache.spark=DEBUG
範例:Managed Service for Apache Spark 映像檔版本 2.1 搭配 Spark 3.3,用於設定
logger.sparkRoot.level:gcloud dataproc clusters create ...\ --properties spark-log4j:logger.sparkRoot.level=debug
工作驅動程式記錄層級
Managed Service for Apache Spark 會使用工作驅動程式的預設 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 執行器記錄層級,請按照下列步驟操作:
準備 log4j 設定檔,然後上傳至 Cloud Storage
。提交工作時,請參照設定檔。
範例:
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 中的 Managed Service for Apache Spark 工作記錄
如要瞭解如何在 Logging 中啟用 Managed Service for Apache Spark 工作驅動程式記錄檔,請參閱「Managed Service for Apache Spark 工作輸出內容和記錄檔」。
在 Logging 中存取工作記錄檔
要存取 Managed Service for Apache Spark 工作記錄,可以使用 Logs Explorer、gcloud logging 指令或 Logging API。
控制台
Managed Service for Apache Spark 工作驅動程式和 YARN 容器記錄檔列於「Cloud Managed Service for Apache Spark Job」(Cloud Managed Service for Apache Spark 工作) 資源下方。
範例:執行 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 中的 Managed Service for Apache Spark 叢集記錄
Managed Service for Apache Spark 會將下列 Apache Hadoop、Spark、Hive、Zookeeper 和其他 Managed Service for Apache Spark 叢集記錄檔匯出至 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 |
Managed Service for Apache Spark 自動調整程式記錄 Managed Service for Apache Spark 代理程式記錄 Managed Service for Apache Spark 啟動指令碼記錄 + 初始化動作記錄 |
|
| 擴充 (額外) 記錄檔 |
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 中存取叢集記錄檔
要存取 Managed Service for Apache Spark 叢集記錄,可以使用 Logs Explorer、gcloud 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,Managed Service for Apache Spark VM 服務帳戶必須具備 logging.logWriter 身分與存取權管理角色。預設的 Managed Service for Apache Spark 服務帳戶已具備此角色。如果您使用自訂服務帳戶,請務必將該角色指派給服務帳戶。
保護記錄檔
根據預設,Logging 中的記錄檔會經過靜態資料加密處理。您可以啟用客戶自行管理的加密金鑰 (CMEK) 來加密記錄檔。有關 CMEK 支援的詳細資訊請參閱「管理記錄檔路由器資料的保護金鑰」和「管理記錄儲存空間資料的保護金鑰」。