Dataproc 工作輸出內容和記錄

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

Spark 記錄

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

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

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

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

Dataproc 和 Spark 工作屬性總覽

屬性 預設 說明
dataproc:dataproc.logging.stackdriver.job.driver.enable 是或否 false 必須在建立叢集時設定。true 時,工作驅動程式輸出會在記錄中,並與工作資源相關聯;當 false 時,工作驅動程式輸出不會出現在記錄中。
注意:您還必須設定下列叢集屬性,才能在記錄中啟用工作驅動程式記錄,這些屬性會在建立叢集時預設設定:dataproc:dataproc.logging.stackdriver.enable=truedataproc:jobs.file-backed-output.enable=true
dataproc:dataproc.logging.stackdriver.job.yarn.container.enable 是或否 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 (預設) 是或否
  • 串流至用戶端
  • 在 Cloud Storage 中,位於 Dataproc 產生的 driverOutputResourceUri
  • 未在記錄中
用戶端 是或否
  • 串流至用戶端
  • 在 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 工作

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

Spark 驅動程式記錄

下表列出不同屬性設定對 Spark 驅動程式記錄檔目的地的影響,這些記錄檔並未透過 Dataproc jobs API 提交。

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

Spark 執行緒記錄

如果 Spark 工作並非透過 Dataproc jobs API 提交,執行緒記錄會顯示在叢集資源下的 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
    ...
    

記錄

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