優化 Azure Integration Runtime 的效能

數據流會在運行時間啟動的Spark叢集上執行。 所使用的叢集組態定義於活動的整合運行時間 (IR) 中。 定義整合運行時間時,有三個效能考慮:叢集類型、叢集大小和存留時間。

如需如何建立 Integration Runtime 的詳細資訊,請參閱 Integration Runtime

開始使用數據流整合運行時間最簡單的方式是從計算大小選擇器中選擇小型、中型或大型。 請參閱以下這些大小的叢集組態對應。

叢集大小

數據流會將數據處理分散到Spark叢集中的不同核心,以平行方式執行作業。 具有更多核心的 Spark 叢集會增加計算環境中的核心數目。 更多核心會增加數據流的處理能力。 增加叢集的大小是減少處理時間的簡單方式。

默認叢集大小為四個驅動程式核心和四個背景工作核心(小型)。 當您處理更多數據時,建議使用較大的叢集。 以下是可能的重設大小選項:

背景工作核心 驅動程式核心 總核心數 備註
4 4 8 Small
8 8 16
16 16 32 大型
32 16 48
64 16 80
128 16 144
256 16 272

數據流會以虛擬核心小時的價格定價,這表示叢集大小和運行時間因素都會納入此狀況。 當您相應增加時,您的叢集每分鐘成本將會增加,但您的整體時間將會減少。

提示

叢集的大小上限會影響數據流的效能。 視您的數據大小而定,有一個點,增加叢集的大小會停止改善效能。 例如,如果您有比數據分割更多的核心,則新增其他核心並無濟於事。 最佳做法是開始小型和相應增加,以符合您的效能需求。

自定義隨機分割區

數據流會將數據分割成分割區,並使用不同的進程加以轉換。 如果分割區中的數據大小超過進程可以保存在記憶體中,進程就會失敗,併發生 OOM(記憶體不足)錯誤。 如果數據流包含具有聯結/匯總的大量數據,您可以嘗試以累加方式變更隨機分割區。 您可以將它從 50 設定為 2000,以避免 OOM 錯誤。 計算數據流運行時間中的自定義屬性 ,是控制計算需求的一種方式。 屬性名稱是 隨機分割區 ,而且是整數類型。 此自定義應該只用於已知案例中,否則可能會導致不必要的數據流失敗。

在增加隨機分割區的同時,請確定數據會分散到整個位置。 粗略的數位是每個分割區大約有1.5 GB的數據。 如果數據扭曲,增加「隨機分割區」將無濟於事。 例如,如果您有 500 GB 的數據,則值應該介於 400 到 500 之間。 隨機分割區的預設限制為 200,適用於大約 300 GB 的資料。

  1. 從 [管理] 下的ADF入口網站中,選取自定義整合運行時間,然後移至編輯模式。
  2. 在 [數據流運行時間] 索引標籤下,移至 [ 計算自定義屬性 ] 區段。
  3. 選取 [屬性名稱] 底下的 [隨機分割區 ]、您選擇的輸入值,例如 250、500 等。

您可以藉由編輯運行時間的 JSON 檔案,在現有屬性之後加入屬性名稱和值,例如 清除 屬性,以執行相同的動作。

存留時間

根據預設,每個數據流活動都會根據 Azure IR 設定啟動新的 Spark 叢集。 冷叢集啟動時間需要幾分鐘的時間,數據處理在完成之前無法啟動。 如果您的管線包含多個 循序 數據流,您可以啟用存留時間 (TTL) 值。 指定存留時間值,會在叢集執行完成之後,讓叢集保持運作一段時間。 如果新的作業在 TTL 期間開始使用 IR,它會重複使用現有的叢集,啟動時間將會大幅減少。 第二個作業完成之後,叢集將會在TTL時間再次保持運作。

不過,如果您的大部分數據流會以平行方式執行,則不建議您為用於這些活動的 IR 啟用 TTL。 一次只能有一個作業在單一叢集上執行。 如果有可用的叢集,但兩個數據流會啟動,則只有一個會使用即時叢集。 第二個作業會啟動自己的隔離叢集。

注意

使用自動解析整合運行時間時無法使用存留時間(預設值)。

請參閱其他與效能相關的資料流程文章: