本頁說明提交、執行和完成 Dataproc 工作所採取的步驟順序,以及工作調節和偵錯。
Dataproc 工作流程
- 使用者將工作提交給 Dataproc。
- JobStatus.State 會標示為
PENDING
。
- JobStatus.State 會標示為
- 等待
dataproc
代理程式擷取工作。- 如果代理程式擷取到工作,JobStatus.State 會標示為
RUNNING
。 - 如果因為代理程式失敗、Compute Engine 網路故障或其他因素,導致代理程式沒有擷取到工作,工作會標示為
ERROR
。
- 如果代理程式擷取到工作,JobStatus.State 會標示為
- 代理程式擷取到工作時,就會確認 Dataproc 叢集的主要節點上是否有足夠的資源,可用來啟動驅動程式。
- 如果沒有足夠的資源,則會延遲工作 (也就是「調節」)。
JobStatus.Substate 會將工作顯示為
QUEUED
,且 Job.JobStatus.details 會提供延遲原因的相關資訊。
- 如果沒有足夠的資源,則會延遲工作 (也就是「調節」)。
JobStatus.Substate 會將工作顯示為
- 如果可用資源充足,
dataproc
代理程式會啟動工作驅動程式程序。- 在這個階段,通常會有至少一個應用程式在 Apache Hadoop YARN 中執行,但在驅動程式完成掃描 Cloud Storage 目錄或執行其他啟動工作之前,Yarn 應用程式無法啟動。
dataproc
代理程式會定期將工作進度、叢集指標,以及與該工作相關聯的 Yarn 應用程式更新傳送給 Dataproc (請參閱工作監控和偵錯)。- Yarn 應用程式執行完畢。
- 當驅動程式執行任何工作完成作業 (例如將集合具體化) 時,系統會繼續將工作狀態回報為
RUNNING
。 - 主執行緒中如有未處理或未偵測到的失敗,會導致驅動程式處於廢止狀態 (標示為
RUNNING
而不提供失敗原因的相關資訊)。
- 當驅動程式執行任何工作完成作業 (例如將集合具體化) 時,系統會繼續將工作狀態回報為
- 驅動程式結束。
dataproc
代理程式向 Dataproc 回報工作完成。- Dataproc 回報工作為
DONE
。
- Dataproc 回報工作為
並行工作數量
建立叢集時,您可以使用 dataproc:dataproc.scheduler.max-concurrent-jobs 叢集屬性,設定並行 Dataproc 工作數量上限。如果未設定這個屬性值,並行工作的上限會計算為 max((masterMemoryMb - 3584) / masterMemoryMbPerJob, 5)
。masterMemoryMb
取決於主要 VM 的機器類型。masterMemoryMbPerJob
預設為 1024
,但可在建立叢集時,透過 dataproc:dataproc.scheduler.driver-size-mb 叢集屬性設定。
後續步驟
- 請參閱「排解工作問題」一文。