提交 Dataproc 工作時,Dataproc 會自動收集工作輸出內容,並提供給您。這表示您可以很快地查看工作輸出,而無需在工作執行或查看複雜的記錄檔時維持對叢集的連線。
Spark 記錄
Spark 記錄檔分為兩種:Spark 驅動程式記錄檔和 Spark 執行工具記錄檔。
Spark 驅動程式記錄包含工作輸出內容;Spark 執行器記錄包含工作可執行檔或啟動器輸出內容,例如 spark-submit
「Submitted application xxx」(已提交應用程式 xxx) 訊息,有助於偵錯工作失敗問題。
Dataproc 工作驅動程式 (與 Spark 驅動程式不同) 是許多工作類型的啟動器。啟動 Spark 工作時,系統會以基礎 spark-submit
可執行檔的包裝函式形式執行,並啟動 Spark 驅動程式。Spark 驅動程式會在 Dataproc 叢集上以 Spark client
或 cluster
模式執行工作:
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=true
和 dataproc: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 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 (預設) | true 或 false |
|
用戶端 | 是 | true 或 false |
|
叢集 | false (預設) | false |
|
叢集 | 是 | 是 |
|
Spark 執行者記錄
下表列出不同屬性設定對 Spark 執行器記錄目的地造成的影響。
dataproc: |
執行者記錄 |
---|---|
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 執行者記錄
如果不是透過 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 ...