阿里ODPS架構與SQL過程
ODPS架構圖
整個ODPS分為
1. 客戶端層
本層體現為使用者使用的客戶端:java/python soft develop kits、command line interface、Integrated Development Environment、這些工具都是對底層REST API的封裝,最後的操作都是在呼叫底層的API函式。使用者通過這些工具實現對ODPS資源的ETL操作,以及對ODPS的狀態、許可權等事項的管控。
2. 接入層
本層體現為各種路由、交換機以及http servers。負責使用者認證、將使用者們發來的請求傳送到伺服器中。
a.先通過LVS負載均衡
b.再在伺服器上將使用者請求轉發到雲賬戶認證伺服器做AccessId校驗以及訊息校驗。驗證通過後返回使用者accountID資訊給伺服器叢集,叢集再將請求詳細發給邏輯層。
3. 邏輯層
本層為ODPS分散式處理軟體的各個模組。主要包括SQL Planner、Worker(請求處理器)、Scheduler(排程器)、Executor(作業執行管理)、MetaStore(元資料表示)。
a.Worker負責處理請求的接入、本地使用者空間|表|資源|任務狀態資訊等的查詢管理、將SQL、MR等分散式計算任務提交給Scheduler。
b.Scheduler負責查詢叢集的記憶體、CPU等狀態以便實現對Instance的排程。Instance就是使用者的一次請求,一個Instance會被分解成多個小task組成的DAG工作流,可以被執行的小tasks會被放在taskPool中,並結合資源狀況計算
c.tasker聚集的資源達到要求時,向taskPool申請一個task,生產並將‘task描述檔案.xml’提交給下一層:計算層。還要監控tasks的running status並返回給Scheduler。
4. 儲存/計算層
a.‘盤古’檔案儲存系統的儲存形式CFile
檔案中的一列可以存在多個block裡,一個block最多64M且儲存的都是同一型別資料,這是為了方便資料壓縮。
索引區中指明瞭每個檔案中各個列對應的block儲存位置,以及儲存在該block中的資料個數。
元資訊區彙總使用者檔案中各個列的基本資訊。
b.選用OTS實現元資料的快速讀寫,水平擴容與資源隔離。