利用可擴展的企業級擷取、轉換和載入 (ETL) 解決方案,解鎖更高效的資料工作流程和更快捷的洞察
使用本指引,有助於消除資料取用需求與常用 ETL 實務執行的低層級資料處理活動之間的差距。組織若採用以 SQL 為基礎的資料管理系統來運作,適應現代化的資料工程實務可能會減慢利用資料中強大洞察的程序。本指引提供具有品質感知的設計,可透過開放原始碼資料架構 Arc,以使用者為中心的 ETL 方法來提高資料處理效率。本指引可加速與 ETL 實務的互動,促進簡單性並提高抽象層級,以便在批次和串流中統一 ETL 活動。
我們還提供使用高效運算執行個體 (例如 AWS Graviton 處理器) 實現最佳設計的選項,讓您能夠優化在 Amazon EKS 上大規模執行 ETL 任務的效能與成本。
請注意:[免責聲明]
架構圖
[架構圖說明]
步驟 1
透過具有 Application Load Balancer 來源的 Amazon CloudFront 端點與 ETL 開發和協同運作工具互動,這可在用戶端與 ETL 工具的端點之間提供安全連線。
步驟 2
開發、測試和排程處理批次和串流資料的 ETL 任務。ETL 程序與資料儲存之間的資料流量,會流經採用 AWS PrivateLink 技術的 Amazon Virtual Private Cloud (Amazon VPC) 端點,而無需離開 AWS 網路。
步驟 3
JupyterHub 整合式開發環境 (IDE)、Argo 工作流程和 Apache Spark 運算子在 Amazon Elastic Kubernetes Service (Amazon EKS) 叢集上以容器形式執行。JupyterHub IDE 可與來源程式碼儲存庫 (例如 GitHub) 整合,以追蹤使用者做出的 ETL 資產變更。資產包括 Jupyter 筆記本檔案,以及要與 Arc ETL 架構一起執行的 SQL 指令碼。
步驟 4
更新來源程式碼儲存庫中的 ETL 資產,然後上傳至 Amazon Simple Storage Service (Amazon S3) 儲存貯體。同步程序可透過來源程式碼儲存庫中的更新起始的自動持續整合和持續部署 (CI/CD) 管道來實作,或者手動執行。
步驟 5
您可選擇變更從程式碼儲存庫上傳至 S3 ETL 資產儲存貯體的 Docker 內建來源程式碼。它會啟用 AWS CodeBuild 和 AWS CodePipeline CI/CD 管道,以自動重建 Arc ETL 架構容器映像,並將其推送至 Amazon Elastic Container Registry (Amazon ECR) 私有登錄檔。
步驟 6
透過 Argo 工作流程排程 ETL 任務,以便在 Amazon EKS 叢集上執行。這些任務會自動從 Amazon ECR 提取 Arc 容器映像,從成品 S3 儲存貯體下載 ETL 資產,並將應用程式日誌傳送至 Amazon CloudWatch。VPC 端點可安全存取所有 AWS 服務。
步驟 7
身為經驗證的使用者,您可在 JupyterHub IDE 中以互動方式,作為 ETL 任務來開發和測試筆記本,這會自動從 AWS Secrets Manager 擷取登入憑證,以驗證登入使用者請求。
步驟 8
存取存放在 S3 儲存貯體中支援交易資料湖格式的 ETL 輸出資料。您可透過與 AWS Glue Data Catalog 整合的 Amazon Athena 來查詢 Delta Lake 資料表。
Well-Architected 支柱
AWS Well-Architected Framework 可協助您了解在雲端建立系統時所做決策的利弊。該架構的六根支柱讓您能夠學習設計和操作可靠、安全、高效、經濟高效且永續的系統的架構最佳實務。使用 AWS Well-Architected Tool (在 AWS 管理主控台中免費提供),您可以透過回答每根支柱的一組問題來針對這些最佳實務審查您的工作負載。
上方的架構圖是一個考量到 Well-Architected 最佳實務而建立的的解決方案的範例。若要完全實現 Well-Architected,您應該盡可能地多遵循 Well-Architected 的最佳實務。
-
卓越營運
在 Amazon EKS 叢集內,Amazon Elastic Compute Cloud (Amazon EC2) 執行個體 (X86_64 CPU、Graviton ARM64) 充當運算節點,執行指引工作負載。根據工作負載需求,在彈性佈建的 Amazon EC2 Spot 執行個體上執行 Spark 任務。
CodeBuild 和 CodePipeline 會自動執行 GitOps 程序,透過 Git 程式碼更新來建置容器映像,並將其推送至 Amazon ECR 私有登錄檔。Argo 工作流程會在 Amazon EKS 上排程 ETL 任務,自動從 Amazon ECR 提取 Arc Docker 映像檔,從成品 S3 儲存貯體下載 ETL 資產,以及將應用程式日誌傳送至 CloudWatch。
這種自動化的 Data ETL 任務部署和執行可將營運開銷降至最低,並提高效率。此外,使用 CodeBuild 和 CodePipeline 的 CI/CD 管道可協助確保持續改善和開發,同時將指引的 Arc Docker 映像檔安全地存放在 Amazon ECR 中。
-
安全性
Amazon EKS 叢集資源部署在 Amazon VPC 內,從而將邏輯網路與公有網際網路隔離。Amazon VPC 支援安全功能,例如 VPC 端點 (保持 AWS 網路內的流量)、安全群組、網路存取控制清單 (ACL),以及 AWS Identity and Access Management (IAM) 角色和政策,以控制傳入和傳出流量和授權。Amazon ECR 映像登錄檔提供容器層級的安全功能,例如漏洞掃描。Amazon ECR 和 Amazon EKS 遵循開放容器計畫 倡議 (OCI) 登錄檔和 Kubernetes API 標準,並採用嚴格的安全協定。
IAM 針對 Amazon S3 應用程式資料提供存取控制,而 AWS Key Management Service (AWS KMS) 則在 Amazon S3 上加密靜態資料。Amazon EKS 叢集上服務帳戶 (IRSA) 的 IAM 角色可針對 Pod 進行精細的存取控制,強制實施以角色為基礎的存取控制,並限制未經授權的 Amazon S3 資料存取。Secrets Manager 可安全地存放和管理憑證。 CloudFront 針對 Jupyter 和 Argo 工作流程 Web 工具提供 SSL 編碼的安全入口點。
-
可靠性
Amazon EKS 透過在多個可用區域 (AZ) 部署 Kubernetes 控制和運算平面,來實現高可用性拓樸。這有助於確保資料應用程式的持續可用性 (即使 AZ 遇到中斷),從而在 Amazon EKS 上可靠地部署多可用區域 EC2 執行個體。
針對資料儲存,Amazon S3 提供高耐久性和可用性,可在區域內的多個可用區域中自動複寫資料物件。此外,Amazon ECR 在高可用性和可擴展性架構中託管 Docker 映像檔,可靠地支援以容器為基礎的應用程式部署和增量。
Amazon S3、Amazon EKS 和 Amazon ECR 是專為高服務層級協議 (SLA) 設計的全受管理服務,並可降低營運成本。它們可部署業務關鍵型應用程式,以滿足高可用性需求。
-
效能達成效率
Amazon EKS 叢集的 Amazon EC2 運算節點可根據應用程式工作負載動態擴展和縮減。以 Graviton 為基礎的 EC2 執行個體透過定製設計的 Arm 處理器、優化的硬體和架構增強功能,提供更高的效能效率。
解耦的運算儲存模式 (包含存放在 Amazon S3 中的輸入和輸出資料) 可提升動態運算擴展效率。Data Catalog 可精簡中繼資料管理,與 Athena 無縫整合,以簡化中繼資料管理並增強查詢效能。Data Catalog 可自動網路爬取和維護技術中繼資料,實現高效的處理和查詢。Athena 提供 Amazon S3 資料的快速查詢,而無需移動資料,進一步提升分析工作流程效率。
-
成本最佳化
Amazon ECR 是一項受管服務,用於保護和支援容器應用程式,針對存放和提供容器映像,採用固定的每月費用。 Amazon EKS 叢集運算節點可根據 Spark 工作負載擴展和縮減,提供經濟高效的 Graviton 和 Spot 執行個體類型。Data Catalog 提供無伺服器、全受管中繼資料儲存庫,無需設定和維護長期運作中的中繼資料資料庫,並降低營運開銷和成本。CodeBuild 和 CodePipeline 在無伺服器環境中自動化建置和部署 Arc ETL 架構的 Docker 映像檔,除了降低基礎設施維護成本之外,還消除了佈建和管理組建伺服器的需求。
-
永續發展
本指引在 Graviton 處理器基礎上,以高效的運算類型執行 Amazon EKS 叢集。Amazon ECR 無需自訂硬體或實體伺服器管理。Data Catalog 和 Athena 是無伺服器服務,可進一步減少能源和環境影響。
針對大規模 Apache Spark 工作負載優化 Amazon EKS 運算層,將分析工作負載的環境影響降至最低。您可靈活地根據效能需求和永續發展優先事項,選擇 Arm 處理器。
相關內容
免責聲明
範例程式碼、軟體庫、命令列工具、概念驗證、範本或其他相關技術 (包括我們的人員提供的任何上述技術) 依據 AWS 客戶協議或您與 AWS 之間的相關書面協議 (以適用者為準) 作為 AWS 內容提供給您。您不得在您的生產帳戶、生產或其他關鍵資料中使用此 AWS 內容。您有責任根據您的特定品質控制實務和標準,依生產級用途來測試、保護和最佳化 AWS 內容 (如範例程式碼)。部署 AWS 內容可能會因建立或使用 AWS 收費資源 (如執行 Amazon EC2 執行個體或使用 Amazon S3 儲存) 而產生 AWS 費用。
本指引中對第三方服務或組織的參考並不意味著 Amazon 或 AWS 與第三方之間的認可、贊助或聯繫。AWS 的指引是技術起點,您可以在部署架構時自訂與第三方服務的整合。