Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
本頁面說明如何將 DAG、資料和設定從現有的 Cloud Composer 1、Airflow 1 環境,轉移至 Cloud Composer 2、Airflow 2。
其他遷移指南
寄件者 | 收件者 | 方法 | 指南 |
---|---|---|---|
Cloud Composer 2 | Cloud Composer 3 | 並排使用遷移指令碼 | 指令碼遷移指南 |
Cloud Composer 2 | Cloud Composer 3 | 並排顯示,使用快照 | 快照遷移指南 |
Cloud Composer 1、Airflow 2 | Cloud Composer 3 | 並排顯示,使用快照 | 快照遷移指南 |
Cloud Composer 1、Airflow 2 | Cloud Composer 2 | 並排顯示,使用快照 | 快照遷移指南 |
Cloud Composer 1、Airflow 2 | Cloud Composer 2 | 並排、手動轉移 | 手動遷移指南 |
Cloud Composer 1、Airflow 1 | Cloud Composer 2、Airflow 2 | 並排顯示,使用快照 | 本指南 |
Cloud Composer 1、Airflow 1 | Cloud Composer 2、Airflow 2 | 並排、手動轉移 | 手動遷移指南 |
Cloud Composer 1、Airflow 1 | Cloud Composer 1、Airflow 2 | 並排、手動轉移 | 手動遷移指南 |
事前準備
Cloud Composer 2 支援 2.0.9 以上版本的快照。Cloud Composer 1 在 1.18.5 版中支援儲存環境快照。
Cloud Composer 支援從 Cloud Composer 1 並行遷移至 Cloud Composer 2。無法原地從 Cloud Composer 1 升級至 Cloud Composer 2。
支援快照的 Airflow 資料庫大小上限為 20 GB。如果環境的資料庫大小超過 20 GB,請縮減 Airflow 資料庫的大小。
環境值區中
/dags
、/plugins
和/data
資料夾中的物件總數必須少於 100,000 個,才能建立快照。如果您使用 XCom 機制傳輸檔案,請務必按照 Airflow 的規範使用。使用 XCom 傳輸大型檔案或大量檔案會影響 Airflow 資料庫的效能,並可能導致載入快照或升級環境時失敗。請考慮使用 Cloud Storage 等替代方案來傳輸大量資料。
由於 Cloud Composer 2 使用 Airflow 2,因此遷移作業包括將 DAG 和環境設定切換至 Airflow 2。請參閱Airflow 1 遷移至 Airflow 2 的遷移指南,瞭解 Cloud Composer 中 Airflow 1 和 Airflow 2 之間的重大變更。
本指南將 Airflow 2 和 Cloud Composer 2 的遷移程序合併為一個程序。如此一來,您在遷移至 Cloud Composer 2 之前,不必先遷移至使用 Airflow 2 的 Cloud Composer 1 環境。
步驟 1:升級至 Airflow 1.10.15
如果您的環境使用的是 1.10.15 以下版本的 Airflow,請升級環境,改用Cloud Composer 版本,使用 Airflow 1.10.15 並支援快照。
步驟 2:檢查與 Airflow 2 的相容性
如要檢查與 Airflow 2 的潛在衝突,請參閱升級至 Airflow 2.0+ 指南中有關升級 DAG的部分。
您可能會遇到的一個常見問題,是與不相容的匯入路徑有關。如要進一步瞭解如何解決這個相容性問題,請參閱升級至 Airflow 2.0 以上版本的指南,並查看有關回報提供者的部分。
步驟 3:確認 DAG 已準備好使用 Airflow 2
將 DAG 轉移至 Cloud Composer 2 環境前,請確認:
DAG 執行成功,且沒有其他相容性問題。
DAG 使用正確的匯入陳述式。
例如,
BigQueryCreateDataTransferOperator
的新匯入陳述式可能會像這樣:from airflow.providers.google.cloud.operators.bigquery_dts \ import BigQueryCreateDataTransferOperator
您的 DAG 已升級至 Airflow 2。這項變更與 Airflow 1.10.14 以上版本相容。
步驟 4:在 Cloud Composer 1 環境中暫停 DAG
為避免重複執行 DAG,請先暫停 Cloud Composer 1 環境中的所有 DAG,再儲存快照。
您可以使用下列任一選項:
在 Airflow 網頁介面中,前往「DAG」,然後手動暫停所有 DAG。
使用 composer_dags 指令碼暫停所有 DAG:
python3 composer_dags.py --environment COMPOSER_1_ENV \ --project PROJECT_ID \ --location COMPOSER_1_LOCATION \ --operation pause
取代:
COMPOSER_1_ENV
與 Cloud Composer 1 環境名稱。- 將
PROJECT_ID
替換為專案 ID。 COMPOSER_1_LOCATION
改成環境所在的地區。
步驟 5:儲存 Cloud Composer 1 環境的快照
主控台
建立環境快照:
前往 Google Cloud 控制台的「Environments」頁面。
在環境清單中,按一下 Cloud Composer 1 環境的名稱。「環境詳細資料」頁面隨即開啟。
按一下 [Create snapshot] (建立快照)。
在「Create snapshot」對話方塊中,按一下「Submit」。在本指南中,您會將快照儲存至 Cloud Composer 1 環境的值區,但您可以視需要選取其他位置。
等待 Cloud Composer 建立快照。
gcloud
取得 Cloud Composer 1 環境的值區 URI:
執行下列指令:
gcloud composer environments describe COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ --format="value(config.dagGcsPrefix)"
取代:
COMPOSER_1_ENV
與 Cloud Composer 1 環境名稱。COMPOSER_1_LOCATION
改成環境所在的地區。
在輸出內容中移除
/dags
資料夾。結果是 Cloud Composer 1 環境值區的 URI。例如,將
gs://us-central1-example-916807e1-bucket/dags
變更為gs://us-central1-example-916807e1-bucket
。
建立 Cloud Composer 1 環境快照:
gcloud composer environments snapshots save \ COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ --snapshot-location "COMPOSER_1_SNAPSHOTS_FOLDER"
取代:
COMPOSER_1_ENV
與 Cloud Composer 1 環境名稱。COMPOSER_1_LOCATION
與 Cloud Composer 1 環境所在的地區。COMPOSER_1_SNAPSHOTS_FOLDER
與 Cloud Composer 1 環境值區的 URI 相關聯。本指南會說明如何將快照儲存至 Cloud Composer 1 環境的值區,但您也可以選擇其他位置。如果您指定自訂位置,兩個環境的服務帳戶必須具備指定位置的讀取和寫入權限。
步驟 6:建立 Cloud Composer 2 環境
建立 Cloud Composer 2 環境。您可以從符合預期資源需求的環境預設值開始,之後再進一步擴充及最佳化環境。
您不需要指定設定覆寫和環境變數,因為稍後載入 Cloud Composer 1 環境的快照時,會取代這些變數。
Airflow 1 中的部分設定選項在 Airflow 2 中使用不同的名稱和部分。詳情請參閱「設定變更」。
步驟 7:將快照載入至 Cloud Composer 2 環境
主控台
如要將快照載入至 Cloud Composer 2 環境,請按照下列步驟操作:
前往 Google Cloud 控制台的「Environments」頁面。
在環境清單中,按一下 Cloud Composer 2 環境的名稱。「環境詳細資料」頁面隨即開啟。
按一下「Load snapshot」。
在「Load snapshot」對話方塊中,按一下「Browse」。
選取含有快照的資料夾。如果您使用本指南的預設位置,這個資料夾會位於 Cloud Composer 1 環境值區的
/snapshots
資料夾中,名稱則是快照儲存作業的時間戳記。例如:us-central1-example-916807e1-bucket/snapshots_example-project_us-central1_example-environment/2022-01-05T18-59-00
。按一下「Load」,等待 Cloud Composer 載入快照。
gcloud
將 Cloud Composer 1 環境的快照載入至 Cloud Composer 2 環境:
gcloud composer environments snapshots load \
COMPOSER_2_ENV \
--location COMPOSER_2_LOCATION \
--snapshot-path "SNAPSHOT_PATH"
取代:
COMPOSER_2_ENV
與 Cloud Composer 2 環境名稱。COMPOSER_2_LOCATION
與 Cloud Composer 2 環境所在的地區。SNAPSHOT_PATH
與 Cloud Composer 1 環境值區的 URI,後面接著快照的路徑。例如:gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00
。
步驟 8:在 Cloud Composer 2 環境中取消暫停 DAG
您可以使用下列任一選項:
在 Airflow 網頁介面中,前往「DAG」,然後逐一手動取消暫停所有 DAG。
使用 composer_dags 指令碼取消暫停所有 DAG:
python3 composer_dags.py --environment COMPOSER_2_ENV \ --project PROJECT_ID \ --location COMPOSER_2_LOCATION \ --operation unpause
取代:
COMPOSER_2_ENV
與 Cloud Composer 2 環境名稱。- 將
PROJECT_ID
替換為專案 ID。 COMPOSER_2_LOCATION
改成環境所在的地區。
(Airflow 2.9.1 以上版本) 如果在取消暫停大量 DAG 時發生配額錯誤,您可以使用下列 Airflow CLI 指令一次取消暫停所有 DAG:
gcloud composer environments run COMPOSER_2_ENV dags unpause \ --project PROJECT_ID \ --location COMPOSER_2_LOCATION \ -- -y --treat-dag-id-as-regex ".*"
(Airflow 2.9.1 以下版本) 如果在取消暫停大量 DAG 時發生配額錯誤,可以使用 Airflow REST API 取消暫停 DAG。另請參閱 Airflow 說明文件中的「試用 API」一節。
步驟 9:檢查 DAG 錯誤
在 Airflow 網頁介面中,前往「DAG」,檢查是否有已回報的 DAG 語法錯誤。
檢查 DAG 是否在正確的時間排定執行。
等待 Cloud Composer 2 環境中 DAG 的執行作業,並檢查是否成功。如果 DAG 執行作業成功,請勿在 Cloud Composer 1 環境中取消暫停;如果這麼做,Cloud Composer 1 環境會在同一時間和日期執行 DAG。
如果特定 DAG 執行作業失敗,請嘗試針對 DAG 進行疑難排解,直到在 Cloud Composer 2 中成功執行為止。
步驟 10:監控 Cloud Composer 2 環境
將所有 DAG 和設定轉移至 Cloud Composer 2 環境後,請監控環境是否有潛在問題、DAG 執行失敗,以及整體環境健康狀態。
如果 Cloud Composer 2 環境在一段時間內運作正常,請考慮刪除 Cloud Composer 1 環境。