進度落後項目是造成系統無法平行處理多項工作,進而拖慢 Dataflow 工作速度的工作項目。
如果是批次管道,落後者是指具有下列特徵的工作項目:
- 完成這項工作所需的時間,遠比同一階段的其他工作項目長。
- 這會減少階段內的平行處理量。
- 並禁止開始新的工作。
在最糟的情況下,進度落後項目會導致階段無法完成,因為有少部分工作正在進行中,進而造成工作整體延遲。
Dataflow 會偵測批次工作期間發生的進度落後情形。如果 Dataflow 偵測到落後者,也會嘗試判斷落後者的原因。
在 Google Cloud 控制台中查看落後者
啟動 Dataflow 工作後,您可以使用 Google Cloud 主控台查看偵測到的任何落後者。
您可以依階段或工作站查看落後者。使用這些檢視畫面找出有落後者的階段,然後在每個階段中找出發生落後者的工作站。
依階段查看落後者
如要依階段查看落後者:
前往 Google Cloud 控制台的 Dataflow「Jobs」(工作) 頁面。
按一下工作名稱。
在工作詳細資料頁面中,按一下「執行詳細資料」分頁標籤。
在「Graph view」(圖表檢視畫面) 清單中,選取「Stage progress」(階段進度)。進度圖會顯示每個階段偵測到的所有落後者匯總計數。
如要查看階段的詳細資料,請將指標懸停在階段的長條上。如要查看階段的工作站,請按一下詳細資料面板中的「查看工作站」。
依工作人員查看落後者
如要依工作站查看落後者:
前往 Google Cloud 控制台的 Dataflow「Jobs」(工作) 頁面。
按一下工作名稱。
在工作詳細資料頁面中,按一下「執行詳細資料」分頁標籤。
在「Graph view」(圖表檢視畫面) 清單中,選取「Worker progress」(工作人員進度)。
在「依階段篩選工作站」清單中,選取階段。進度圖會顯示該階段偵測到的任何落後者。在首次偵測到落後者的時間點,長條會顯示較深的陰影。
如要查看工作人員的詳細資料,請將指標懸停在該工作人員的長條上。
在「Stage info」(階段資訊) 面板中,「Straggler details」(落後者詳細資料) 區段會列出頁面上所有工作者的落後者,並提供下列資訊:
- 偵測到落後者的開始時間。
- 發生延遲的工作站。
- 原因 (如果知道的話)。
排解批次延遲問題
Dataflow 會偵測批次管道中出現落後者的下列原因:
熱鍵:熱鍵是指在同一個
PCollection
中,代表的元素數量明顯多於其他按鍵的按鍵。詳情請參閱本文的「排解快速鍵造成的進度落後項目」一節。Slow Worker:在速度緩慢的工作站上,工作項目的執行速度會比平常慢。通常,速度緩慢的工作站處理速度會低於在同一階段執行類似工作的工作站。許多因素都可能導致工作站速度緩慢,包括 CPU 資源不足、磁碟空間不足、機器架構和工作站程序停滯。發生速度緩慢的情況時,Dataflow 會嘗試自動緩解問題。詳情請參閱本文的「自動減輕緩慢工作站造成的落後問題」一節。
原因不明。如要瞭解原因不明的進度落後項目,請參閱「排解緩慢或停滯的工作」一文中的一般疑難排解步驟。
排解快速鍵造成的進度落後項目
造成落後者的原因有很多,但常見的原因是存在快速鍵。熱鍵是指在同一個 PCollection
中,代表的元素數量遠多於其他鍵。熱鍵會限制 Dataflow 平行處理元素的能力,因此可能會導致延遲。
如果 Dataflow 偵測到快速鍵導致進度落後,[Straggler Details] (進度落後項目詳細資料) 面板會將 Hot Key
列為原因。
根據預設,Dataflow 不會顯示熱鍵的鍵值。如要顯示鍵值,請在執行工作時,將 hotKeyLoggingEnabled
管道選項設為 true
。
如要解決這個問題,請檢查資料是否均勻分布。如果某個索引鍵的值過多而不成比例,請考慮採取下列做法:
- 重新輸入資料。套用
ParDo
轉換以輸出新的鍵/值組合。 - Java 工作請使用
Combine.PerKey.withHotKeyFanout
轉換。 - 如果是 Python 工作,請使用
CombinePerKey.with_hot_key_fanout
轉換。 - 啟用 Dataflow Shuffle。
舉例來說,如果管道在 SQL 轉換中執行 JOIN
作業,則當特定鍵饋入在擴展 JOIN
作業中執行的 GroupByKey
時,該鍵可能包含不成比例的資料量。
詳情請參閱下列功能要求:beam-issue/28186。
自動減輕工作站速度緩慢造成的進度落後項目
Dataflow 中工作站速度緩慢的情況並不常見,但可能會影響工作效能。為避免效能問題,Dataflow 偵測到工作站速度緩慢時,會嘗試緩解問題,避免工作站造成延遲。
自動緩解措施會模擬主機維護事件。這項事件是定期執行的 Compute Engine 維護機制。視工作站的主機維護政策而定,工作站會即時遷移或重新啟動。如果發生即時遷移,工作負載不會中斷。 如果工作站重新啟動,緩慢工作站正在進行的工作就會遺失,並重新開始處理。
如果系統偵測到工作執行速度緩慢,並成功減緩速度,job-message 記錄檔中會顯示以下訊息:
Slow worker ... detected and automatically remediated ...
由於緩慢工作者並非落後者,因此您不需要採取進一步行動。
如果緩解措施失敗,緩慢的工作站會導致落後者,並顯示在 Dataflow 監控介面中。
如果專案的執行個體模擬維護事件要求配額用盡,自動緩解措施可能會失敗。如要進一步瞭解預設配額,請參閱「資源用量配額和權限管理」一文中的「區域指標的 API 使用頻率限制」。如要申請提高配額限制,請參閱「查看及管理配額」一文中的「申請調整配額」一節。
後續步驟
- 瞭解如何使用 Dataflow 監控介面。
- 瞭解監控介面中的「執行作業詳細資料」分頁。