本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
監控串流作業是建立ETL管道的關鍵部分。除了使用 Spark UI 之外,您還可以使 CloudWatch 用 Amazon 監視指標。以下是 AWS Glue 框架發出的流指標列表。如需所有 AWS Glue 指標的完整清單,請參閱AWS Glue 使用 Amazon CloudWatch 指標進行監控。
AWS Glue 使用結構化的串流架構來處理輸入事件。您可以API直接在代碼中使用 SparkGlueContext
,也可以利用發布這些指標ForEachBatch
提供的提供者。若要了解這些指標,我們必須先了解何謂 windowSize
。
windowSize: windowSize
是您提供的微批次間隔。如果您指定的視窗大小為 60 秒, AWS Glue 串流工作將等待 60 秒 (如果上一個批次尚未完成,則會等待更長時間),然後才會從串流來源讀取批次中的資料並套用中ForEachBatch
提供的轉換。此間隔也稱為「觸發間隔」。
讓我們更深入地查看指標,以了解運作狀態和效能特性。
注意
這些指標每 30 秒發出一次。如果您的 windowSize
小於 30 秒,則回報的指標會是彙總資料。舉例來說,假設您的 windowSize
是 10 秒,每個微批次固定處理 20 筆記錄。在這個案例中,發出的量度值 numRecords 會是 60。
如果沒有可用的資料,則不會發出指標。此外,如果是取用者延遲指標,則必須啟用該功能才能取得其指標。
如何獲得最佳效能
Spark 會嘗試在 Amazon Kinesis 串流中為每個碎片建立一個任務以進行讀取。每個碎片中的資料即成為一個分割區。然後,它會根據每個工作者的核心數量 (每個工作者的核心數量取決於您選擇的工作者類型,G.025X
、G.1X
等),將這些任務分配給執行器/工作者。然而,任務的分配方式並無法確定。所有任務都會在各自的核心上平行執行。如果碎片超過可用執行器核心的數量,則會將任務排入佇列。
您可以合併使用上述指標和碎片數量,以佈建執行器提供穩定的負載,為突發流量預留空間。建議您為任務執行幾次反覆運算,以判斷工作者的大致數目。對於不穩定/突然達到尖峰的工作負載,您可以設定自動調整功能和工作者數目上限來完成相同的操作。
根據windowSize
您的業務SLA要求設置。舉例來說,如果您的業務要求處理過的資料過時時間不能超過 120 秒,則您應將 windowSize
設定為至少 60 秒,以確保平均取用者延遲不超過 120 秒 (請參閱上述「取用者延遲」一節)。從那裡取決於碎片的數量numRecords
和數量,計劃DPUs確保您batchProcessingTimeInMs
的windowSize
大部分時間小於 70% 的容量。
注意
熱碎片可能會導致資料扭曲,這表示有部分碎片/分割區比其他碎片大得多。這可能會導致某些平行執行的任務花費更長的時間,因而導致任務落後。因此,在前一批次的所有任務完成之前,無法開始下一批次,這將會使 batchProcessingTimeInMillis
和最大延遲受到影響。