7.部署架構
Karthikeyan Nagalingam, NetApp
本節定義了運行該傳輸途徑所需的基礎架構配置、軟體相依性和網路連線。此部署將 Airflow 協調與 XCP 資料移動主機分離,同時將這兩個元件連接到 StorageGRID、ONTAP NAS 以及選定的 ONTAP S3 或 LustreFS 訓練目的地。
[[7-1-reference-infrastructure-requirements]]
== 7.1 參考基礎架構需求
以下元件建立最小功能部署實體佔用空間。根據所選的準備引擎和並行工作負載調整 Airflow 主機的規模;將 XCP 主機放置在可以存取 ONTAP NAS NFS 匯出和所選目的地之處,以避免不必要的網路躍點。LustreFS 模式要求在 XCP 主機和 Airflow worker 上都具有相容的裝載。
| 成分 | 要求 |
|---|---|
Airflow 主機 |
CPU/記憶體容量大小應根據 Spark 或 Python 轉換負載進行調整 |
XCP 主機 |
網路存取 NFS/Lustre 和 NetApp ONTAP S3 端點 |
LustreFS 用戶端 |
當選擇為目的地時,裝載到 XCP 主機和 Airflow 主機上 |
[[7-1-1-reference-validation-environment]]
=== 7.1.1 參考驗證環境
以下環境用作具有代表性的單節點驗證設定檔。它是功能和效能評估的起點,而非生產環境的規模建議;客戶必須根據其資料集 Volume、並行性、保留、恢復和服務等級要求來確定運算、網路、儲存容量和保護的規模。
| 層 | 參考硬體/軟體 |
|---|---|
運算和網路 |
一台伺服器,配備 256 GB 記憶體、64 個 CPU 核心和 10 GbE 連線 |
ONTAP 作用中儲存設備 |
一台 NetApp A800 系統,配備 48 顆 1.8 TB 固態硬碟 |
物件儲存設備 |
一台 NetApp StorageGRID SG5864 應用裝置 |
高通量訓練儲存設備 |
一套配備 LustreFS 的 NetApp E2812 系統 |
平台軟體 |
Kubernetes、Apache Airflow、Apache Airbyte、單節點 Apache Spark、NetApp XCP 和 LustreFS |
[[7-2-software-version-matrix]]
== 7.2 軟體版本對照表
此對照表標示已驗證傳輸途徑所使用的執行階段軟體。請確保 Airflow 和 Python 環境與已部署的提供者和套件相容。Spark 、 Delta Lake 和 Iceberg 是選用的,只有在 `data_prep`使用 Spark 轉換路徑或對應的表格格式時才需要。
| 軟體 | 版本/備註 |
|---|---|
Apache Airflow |
2.x |
Python |
3.11 |
boto3 |
最新穩定版 |
scikit-learn |
最新穩定版 |
PySpark(選用) |
相容於 Delta 3.2.0 / Iceberg 1.5.2 執行階段套件 |
NetApp XCP |
安裝在遠端主機上,例如 |
[[7-3-network-requirements]]
== 7.3 網路要求
這些網路流量必須由路由、防火牆和名稱解析原則允許。建議生產環境中所有與 S3 相容的端點都使用 HTTPS;如果端點未使用預設的 HTTPS 連接埠,請使用已設定的自訂連接埠。根據已部署的 LustreFS 實作,確認 Lustre 用戶端的連線。
| 流程 | 協定/連接埠 |
|---|---|
Airflow → ONTAP S3 |
HTTPS/HTTP(443/80 或自訂) |
Airflow → XCP 主機 |
SSH(22) |
XCP 主機 → NFS 來源 |
NFS(2049) |
XCP 主機 → LustreFS |
Lustre 用戶端連接埠 |
XCP 主機 → ONTAP S3(S3 模式) |
HTTPS/HTTP |
[[7-4-deployment-notes]]
== 7.4 部署說明
| 章節 / 主題 | 指導 / 操作實務 |
|---|---|
SSH 連線設定 |
設定 Airflow 連線 |
服務生命週期管理 |
使用 `tools/airflow_ctl.sh`在部署和維護期間管理本機 Airflow 排程器和 Web 伺服器生命週期。 |
憑證與機密儲存設備 |
將憑證、API 權杖和存取金鑰儲存在 Airflow Connections、Variables 或 secrets 後端,而不是即時在 `dag_run.conf`中。 |
基礎架構與工作可觀測性 |
分別監控排程器心跳和工作執行情況,以便將協調可用度問題與 DAG 故障區分開來。 |
[[7-5-installation-and-prerequisites]]
== 7.5 安裝與前提條件
本小節定義了在全新環境中建置、設定和執行經 NetApp AI 驗證的傳輸途徑所需的基本安裝步驟。它適用於在執行任何 DAG 之前設定 Airflow 工作區的操作人員、架構師和工程師。
[[7-5-1-prerequisites]]
=== 7.5.1 先決條件
安裝解決方案前,請確認目標主機符合以下最低需求:
-
Linux 作業系統,最好是 Ubuntu 22.04/24.04 或 RHEL 8+。
-
具備 Python 3.11 以及
pip、venv與可用的建置工具。 -
主機上已安裝 Git,用於來源擷取和版本管理。
-
Apache Airflow 2.x 部署在專用的 Python 虛擬化環境。
-
從 Airflow 主機到 NetApp XCP 主機的 SSH 存取。
-
從 Airflow 主機到 StorageGRID、ONTAP NAS 和選定的 ONTAP S3 或 LustreFS 目的地的網路連線。
-
為原始資料、預處理資料接移和歸檔儲存設備提供與 S3 相容的端點存取。
-
選用:如果使用 `spark`準備路徑,則需要 Java 執行階段和 Spark 3.x。
-
選用:選取
table_format=delta或table_format=iceberg時的 Delta Lake 與 Iceberg 執行階段套件。 -
選用:使用
xcp_copy_destination=lustrefs時的 Lustre 用戶端裝載。
[[7-5-2-software-package-acquisition-and-repository-access]]
=== 7.5.2 軟體套件取得與儲存庫存取
若要取得此解決方案的軟體套件、自動化 DAG、部署指令碼與驗證成品,請透過 ng-data-mobility-in-ai-pipeline@netapp.com 聯絡 NetApp AI & Data Mobility 工程團隊。
取得存取權限後,從 GitHub 下載或 Clone 專案來源到目標工作目錄中:
# Example GitHub clone
mkdir -p /opt/netapp-ai
cd /opt/netapp-ai
git clone https://github.com/<your-org>/<your-repo>.git
cd <your-repo>
git checkout main
ls -la
如果您已經在 `/opt/netapp-ai/<your-repo>`下 Clone 了儲存庫,請從該工作目錄繼續,而不是下載另一個複本。
[[7-5-3-create-the-python-environment]]
=== 7.5.3 建立 Python 環境
建立一個專用的虛擬化環境,並安裝 Airflow 和傳輸途徑的基本相依性。
export REPO_ROOT=/opt/netapp-ai/<your-repo>
cd "$REPO_ROOT"
python3 -m venv "$REPO_ROOT/.venv"
source "$REPO_ROOT/.venv/bin/activate"
python -m pip install --upgrade pip setuptools wheel
pip install "apache-airflow>=2.8,<3.0" boto3 scikit-learn
對於基於 Spark 的準備和 Lakehouse 表格格式,請視需要安裝選用套件:
pip install pyspark==3.5.*
pip install delta-spark==3.2.0
pip install apache-iceberg==1.5.2
請使用 Spark 執行階段和叢集拓撲所支援的確切套件版本。請勿混用不相容的 Spark、Delta 和 Iceberg 組合。
[[7-5-4-configure-airflow-and-the-repository]]
=== 7.5.4 設定 Airflow 和儲存庫
從 Clone 的儲存庫根目錄,初始化 Airflow 中繼資料資料庫,並驗證 DAG 檔案對 Airflow 是否可見。
export AIRFLOW_HOME="$REPO_ROOT/.airflow"
export AIRFLOW__CORE__DAGS_FOLDER="$REPO_ROOT"
export AIRFLOW__CORE__LOAD_EXAMPLES=False
airflow db init
airflow dags list | grep -E "example_ai_pipeline|example_ai_pipeline_sklearn"
工作區包含已驗證傳輸途徑所需的 Airflow 組態檔案和 DAG。如果儲存庫包含用於本機生命週期管理的輔助指令碼,請使用該指令碼來啟動排程器和 Web 伺服器,而不是手動呼叫 Airflow。
# Start the Airflow scheduler and webserver with the deployment's service manager.
# or, if using the standard commands:
# airflow scheduler
# airflow webserver
[[7-5-5-required-connectivity-and-secret-configuration]]
=== 7.5.5 必要的連線與機密組態
在執行傳輸途徑之前,請確認以下資源可從 Airflow 主機存取:
-
StorageGRID 原始資料 S3 端點。
-
ONTAP NAS 預置資料儲存桶端點。
-
ONTAP S3 目標端點何時
xcp_copy_destination=s3。 -
LustreFS 裝載時
xcp_copy_destination=lustrefs。 -
透過 SSH 使用 `ssh_default`或已設定的 SSH 連線的 XCP 主機。
將憑證儲存在 Airflow 連線、變數或機密後端中,而不是將其嵌入到 shell 歷史記錄或 DAG 程式碼中。在觸發傳輸途徑執行之前,設定所需的存取金鑰、端點和設定檔對應。
[[7-5-6-verify-the-installation]]
=== 7.5.6 驗證安裝
當 Airflow 排程器和 DAG 正在執行,且範例傳輸途徑可以列出和觸發而沒有組態錯誤時,即可確認安裝成功。
airflow dags list
airflow tasks list example_ai_pipeline_sklearn
如果安裝正確,DAG 應該存在於 Airflow 中,並準備好使用儲存庫根目錄中的觸發指令碼進行 `CONF_JSON`驅動的執行。
./trigger_and_wait_ai_pipeline_sklearn.sh
至此,環境已準備好進行第 8 節中的組態範例和操作指南中所述的部署場景。