提交 Dataproc 工作時,Dataproc 會自動收集工作輸出內容,並提供給您。這表示您可以快速查看工作輸出,而無需在工作執行或查看複雜的記錄檔時維持對叢集的連線。
Spark 記錄
Spark 記錄分為兩種類型:Spark 驅動程式記錄和 Spark 執行工具記錄。Spark 驅動程式記錄包含工作輸出內容;Spark 執行緒記錄包含工作可執行檔或啟動器輸出內容,例如 spark-submit
「已提交應用程式 xxx」訊息,有助於偵錯工作失敗問題。
Dataproc 工作驅動程式與 Spark 驅動程式不同,是許多工作類型的啟動程式。啟動 Spark 工作時,系統會將其當作包裝函式在基礎 spark-submit
可執行檔上執行,並啟動 Spark 驅動程式。Spark 驅動程式會在 Spark client
或 cluster
模式下,在 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=true 和 dataproc:jobs.file-backed-output.enable=true
|
dataproc:dataproc.logging.stackdriver.job.yarn.container.enable |
是或否 | false | 必須在建立叢集時設定。
當 true 時,工作 YARN 容器記錄會與工作資源建立關聯;當 false 時,工作 YARN 容器記錄會與叢集資源建立關聯。 |
spark:spark.submit.deployMode |
用戶端或叢集 | 用戶端 | 控制 Spark client 或 cluster 模式。 |
使用 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: |
輸出 |
---|---|
false (預設) |
|
是 |
|
Spark 驅動程式記錄
下表列出不同資源設定對 Spark 驅動程式記錄目的地的影響。
spark: |
dataproc: |
dataproc: |
驅動程式輸出 |
---|---|---|---|
用戶端 | false (預設) | 是或否 |
|
用戶端 | 是 | 是或否 |
|
叢集 | false (預設) | false |
|
叢集 | 是 | 是 |
|
Spark 執行緒記錄
下表列出不同屬性設定對 Spark 執行緒記錄目的地的影響。
dataproc: |
執行器記錄 |
---|---|
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 執行緒記錄
如果 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 ...