Dataproc 工作輸出內容和記錄

提交 Dataproc 工作時,Dataproc 會自動收集工作輸出內容,並提供給您。這表示您可以很快地查看工作輸出,而無需在工作執行或查看複雜的記錄檔時維持對叢集的連線。

Spark 記錄

Spark 記錄檔分為兩種:Spark 驅動程式記錄檔和 Spark 執行工具記錄檔。 Spark 驅動程式記錄包含工作輸出內容;Spark 執行器記錄包含工作可執行檔或啟動器輸出內容,例如 spark-submit「Submitted application xxx」(已提交應用程式 xxx) 訊息,有助於偵錯工作失敗問題。

Dataproc 工作驅動程式 (與 Spark 驅動程式不同) 是許多工作類型的啟動器。啟動 Spark 工作時,系統會以基礎 spark-submit 可執行檔的包裝函式形式執行,並啟動 Spark 驅動程式。Spark 驅動程式會在 Dataproc 叢集上以 Spark clientcluster 模式執行工作:

  • client 模式:Spark 驅動程式會在 spark-submit 程序中執行工作,而 Spark 記錄檔會傳送至 Dataproc 工作驅動程式。

  • cluster 模式:Spark 驅動程式會在 YARN 容器中執行工作。Dataproc 工作驅動程式無法存取 Spark 驅動程式記錄。

Dataproc 和 Spark 工作屬性總覽

屬性 預設 說明
dataproc:dataproc.logging.stackdriver.job.driver.enable true 或 false false 必須在建立叢集時設定。如果是 true,工作驅動程式輸出會記錄在與工作資源相關聯的 Cloud Logging 中;如果是 false,工作驅動程式輸出不會記錄在 Cloud Logging 中。
注意:如要在 Logging 中啟用工作驅動程式記錄,也必須設定下列叢集屬性。建立叢集時,系統會預設設定這些屬性:dataproc:dataproc.logging.stackdriver.enable=truedataproc:jobs.file-backed-output.enable=true
dataproc:dataproc.logging.stackdriver.job.yarn.container.enable true 或 false false 必須在建立叢集時設定。 如果是 true,工作 YARN 容器記錄會與工作資源建立關聯;如果是 false,工作 YARN 容器記錄會與叢集資源建立關聯。
spark:spark.submit.deployMode 用戶端或叢集 用戶端 控制 Spark clientcluster 模式。

使用 Dataproc jobs API 提交的 Spark 工作

本節中的表格列出透過 Dataproc jobs API 提交工作時,不同屬性設定對 Dataproc 工作驅動程式輸出目的地造成的影響,包括透過Google Cloud 控制台、gcloud CLI 和 Cloud 用戶端程式庫提交工作。

建立叢集時,可使用 --properties 標記設定所列的 Dataproc 和 Spark 屬性,這些屬性會套用至叢集上執行的所有 Spark 工作;將工作提交至 Dataproc jobs API 時,也可使用 --properties 標記 (不含「spark:」前置字串) 設定 Spark 屬性,這些屬性只會套用至該工作。

Dataproc 工作驅動程式輸出內容

下表列出不同屬性設定對 Dataproc 工作驅動程式輸出目的地造成的影響。

dataproc:
dataproc.logging.stackdriver.job.driver.enable
輸出
false (預設)
  • 串流至用戶端
  • 在 Cloud Storage 中,位於 Dataproc 產生的 driverOutputResourceUri
  • 未記錄
  • 串流至用戶端
  • 在 Cloud Storage 中,位於 Dataproc 產生的 driverOutputResourceUri
  • 在記錄中:工作資源下方會顯示 dataproc.job.driver

Spark 驅動程式記錄

下表列出不同屬性設定對 Spark 驅動程式記錄目的地造成的影響。

spark:
spark.submit.deployMode
dataproc:
dataproc.logging.stackdriver.job.driver.enable
dataproc:
dataproc.logging.stackdriver.job.yarn.container.enable
驅動程式輸出
用戶端 false (預設) true 或 false
  • 串流至用戶端
  • 在 Cloud Storage 中,位於 Dataproc 產生的 driverOutputResourceUri
  • 未記錄
用戶端 true 或 false
  • 串流至用戶端
  • 在 Cloud Storage 中,位於 Dataproc 產生的 driverOutputResourceUri
  • 在 Logging 中:工作資源下方的 dataproc.job.driver
叢集 false (預設) false
  • 不會串流至用戶端
  • 不在 Cloud Storage 中
  • 在叢集資源下的 Logging yarn-userlogs
叢集
  • 不會串流至用戶端
  • 不在 Cloud Storage 中
  • 在 Logging 中:工作資源下方的 dataproc.job.yarn.container

Spark 執行者記錄

下表列出不同屬性設定對 Spark 執行器記錄目的地造成的影響。

dataproc:
dataproc.logging.stackdriver.job.yarn.container.enable
執行者記錄
false (預設) 在 Logging 中:叢集資源下的 yarn-userlogs
在 Logging dataproc.job.yarn.container 中,位於工作資源下方

未透過 Dataproc jobs API 提交的 Spark 工作

本節列出不同屬性設定對 Spark 工作記錄目的地造成的影響,這些工作是在未使用 Dataproc jobs API 的情況下提交,例如使用 spark-submit 直接在叢集節點上提交工作,或是使用 Jupyter 或 Zeppelin 筆記本。這些工作沒有 Dataproc 工作 ID 或驅動程式。

Spark 驅動程式記錄

下表列出不同屬性設定對 Spark 驅動程式記錄目的地造成的影響,適用於未透過 Dataproc jobs API 提交的工作。

spark:
spark.submit.deployMode
驅動程式輸出
用戶端
  • 串流至用戶端
  • 不在 Cloud Storage 中
  • 未記錄
叢集
  • 不會串流至用戶端
  • 不在 Cloud Storage 中
  • 在叢集資源下的 Logging yarn-userlogs

Spark 執行者記錄

如果不是透過 Dataproc jobs API 提交 Spark 工作,執行器記錄檔會位於 Logging yarn-userlogs 的叢集資源下方。

查看工作輸出內容

您可以在 Google Cloud 控制台、gcloud CLI、Cloud Storage 或 Logging 中存取 Dataproc 工作輸出。

控制台

如要查看工作輸出內容,請前往專案的 Dataproc「工作」部分,然後按一下「工作 ID」即可查看工作輸出內容。

如果工作正在執行中,系統會定期重新整理工作輸出,以顯示新內容。

gcloud 指令

使用 gcloud dataproc jobs submit 指令提交工作時,會在主控台中顯示工作輸出。您可以稍後在不同的電腦上或使用新的視窗「重新彙整」輸出,只要將工作 ID 傳送至 gcloud dataproc jobs wait 指令即可。工作 ID 是 GUID,例如 5c1754a5-34f7-4553-b667-8a1199cb9cab。以「Black cat ate the mouse」

gcloud dataproc jobs wait 5c1754a5-34f7-4553-b667-8a1199cb9cab \
    --project my-project-id --region my-cluster-region
Waiting for job output...
... INFO gcs.GoogleHadoopFileSystemBase: GHFS version: 1.4.2-hadoop2
... 16:47:45 INFO client.RMProxy: Connecting to ResourceManager at my-test-cluster-m/
...

Cloud Storage

工作輸出內容會儲存在 Cloud Storage 中,即暫存值區或您建立叢集時指定的值區。Cloud Storage 中工作輸出的連結會顯示在 Job.driverOutputResourceUri 欄位中,由下列項目傳回:

  • jobs.get API 要求。
  • gcloud dataproc jobs describe job-id 指令。
    $ gcloud dataproc jobs describe spark-pi
    ...
    driverOutputResourceUri: gs://dataproc-nnn/jobs/spark-pi/driveroutput
    ...
    

記錄

如要瞭解如何在 Cloud Logging 中查看 Dataproc 工作輸出內容,請參閱「Dataproc 記錄」。