數據開發平臺
統一計算平臺
-
MaxCompute:主要服務于海量數據的存儲和計算 ,提供完善的數據導入方案, 以及多種經典的分布式計算模型,提供海量數據倉庫的解決方案,能夠更快速地解決用戶的海量數據計算問題,有效降低企業成本,并保障數據安全。
-
MaxCompute客戶端:包括Web、SDK、CLT、IDE等形式完成 Project 管理、數據同步、任務調度、報表生成等常見操作。
-
MaxCompute接入層:提供HTTP服務、Cache、負載均衡,實現用戶認證和服務層面的訪問控制。
-
MaxCompute控制層:實現用戶空間和對象的管理、命令的解析與執行邏輯、數據對象的訪問控制與授權等功能。
Worker:處理所有的RESTful 請求,包括用戶空間( Project )管理操作、資源( Resource) 管理操作、作業管理等;對于 SQL DML、MR 等需要啟動 MapReduce 的作業,會生成 MaxCompute Instance 提交給 Scheduler 一步處理。
Scheduler:負責MaxCompute Instance的調度和拆解,并向計算層的計算集群詢問資源占用情況以進行流控。
Executor:負責 MaxCompute Instance 的執行,向計算層的計算集群提交真正的計算任務。
-
MaxCompute計算層:包括分布式文件系統(Pangu)、資源調度系統(Fuxi)、NameSpace服務、監控模塊。
-
MaxCompute元數據:主要包括用戶空間元數據、 Table Partition Schema、ACL、Job 元數據、安全體系等。
-
MaxCompute架構
統一開放平臺
-
D2:集成任務開發、調試及發布,生產任務調度及大數據運維,數據權限申請及管理等功能的一站式數據開發平臺。
-
Dataworks:核心功能與D2一致,D2服務與阿里集團內部業務,Dataworks則為阿里云對外商業化大數據開發治理平臺。
-
SQLSCAN:在任務開發中用戶編寫的SQL質量差、性能低、不遵守規范等問題,總結成規范,通過系統及研發流程保障。
代碼規范類規則:表命名規范、生命周期設置、表注釋等。
代碼質量類規則:調度參數使用檢查、分母為 提醒、 NULL 值參與計算影響結果提醒、插入字段順序錯誤等。
代碼性能類規則:分區裁剪失效、掃描大表提醒、重復計算檢測等。
-
DQC:主要關注數據質量, 通過配置數據質量校驗規則,自動在數據處理任務過程中進行數據質量方面的監控。
數據監控:監控數據質量并報警,其本身不對數據產出進行處理,需要報警接收人判斷并決定如何處理。
數據清洗:將不符合既定規則的數據清洗掉,以保證最終數據產出不含“臟數據”,數據清洗不會觸發報警。
監控規則:主鍵監控、表數據量及波動監控、重要字段的非空監控、重要枚舉宇段的離散值監控、 指標值波動監控等。
任務調度系統
核心設計模型
- 調度引擎:根據任務節點屬性及依賴關系進行實例化, 生成各類參數的實值,并生成調度樹。
- 執行引擎:根據調度引擎生成的具體任務實例和配置信息,分配 CPU 內存、運行節點等資源,在任務對應的環境中運行代碼。
任務狀態機模型
-
預備階段:WAITING_DEPENDENCY → READY → WAITING_RESOURCE
-
執行階段:RUNNING(核心處理節點)
-
終態階段:SUCCESS/KILLED/SUSPENDED
-
異常回路:FAILED ? WAITING_RETRY
工作流狀態機模型
調度引擎工作原理
- Async Dispatcher:異步處理任務調度。
- Sync Dispatcher:同步處理任務調度。
- Task 事件處理器:任務事件處理器,與任務狀態機交互。
- DAG 事件處理器:工作流事件處理器,與工作流狀態機交互,一個DAG 事件處理器包含若干個 Task 事件處理器。
執行引擎工作原理
- 任務管理接口:供用戶系統向 Alisa 中提交、查詢和操作離線任 務,并獲得異步通知。
- 系統管理接口:供系統管理員進行后臺管理,包括為集群增加新 的機器、劃分資源組、查看集群資源和負載、追蹤任務狀態等。
- Driver:中實現了任務管理接口和系統管理接口;負責任務的調度策略、集群容災和伸縮、任務失效備援、 負載均衡實現。
- Task pool:已經提交的任務放入到 Task pool 中管理,包括等待資源、數據質量檢測、運行中、運行成功和失敗的所有任務。
- Resource manager:組件專注于集群整體資源的管理。
- Task container:容器負責處理 Task 的公共邏輯,如文件下載,任務級 Session 、流程級 Session 的維護等。
- Session manager :組件實現了對 Task session 的管理。
- Node:Node節點負責提供任務運行所需的物理資源,Node 是邏輯概念, 一臺物理機器上可部署一個或者多個 Node。
任務調度系統應用
- 調度配置:任務提交時, SQL 解析引擎自動識別此任務的輸入表和輸出 表,輸入表自動關聯產出此表的任務 ,輸出表亦然。
- 定時調度:可以根據實際需要,設定任務的運行時間,共有5種時間類型:分鐘、小時、日、周、月,具體可精確到秒。
- 周期調度:可按照小時、日等時間周期運行任務,與定時調度的區別是無須指定具體的開始運行時間。
- 手動運行:當生產環境數據修復或臨時數據操作時,在開發環境中寫好腳本后發布到生產環境,再通過手動觸發運行。
- 基線管理:基于充分利用計算資源,保證重點業務數據優先產出,合理安排各類優先級任務的運行。