1、背景sql
搜索離線數據處理是一個典型的海量數據批次/實時計算結合的場景,阿里搜索中臺團隊立足內部技術結合開源大數據存儲和計算系統,針對自身業務和技術特色構建了搜索離線平臺,提供複雜業務場景下單日批次處理千億級數據,秒級實時百萬TPS吞吐的計算能力。數據庫
2、何謂「離線」?後端
在阿里搜索工程體系中咱們把搜索引擎、在線算分、SearchPlanner等ms級響應用戶請求的服務稱之爲「在線」服務;與之相對應的,將各類來源數據轉換處理後送入搜索引擎等「在線」服務的系通通稱爲「離線」系統。性能優化
商品搜索的業務特性決定了離線系統從誕生伊始就是一個大數據系統,它有如下一些特色:架構
一、任務模型上區分全量和增量分佈式
二、 須要支持多樣化的輸入和輸出數據源,包括:Mysql,ODPS,TT等各類數據庫和消息隊列做爲輸入,搜索、Ranking、圖、推薦等各類引擎做爲輸出。性能
三、須要提供必定能力的數據處理能力,例如多表Join、UDTF支持等,以方便搜索業務的開發和接入。大數據
3、離線平臺技術組件結構,其中部分組件:優化
一、Maat:分佈式任務調度平臺。ui
基於Airflow發展而來,主要改進點是調度性能優化、執行器FaaS化、容器化、API及調度功能擴展等四個部分,在保持對Airflow兼容的基礎上,大幅提高性能,提升了穩定性。
一個離線任務的多個Blink job會經過Maat創建依賴關係並進行調度。
二、Bahamut:
執行引擎,是整個離線平臺的核心,負責離線任務的建立、調度、管理等各類功能,後文會詳細介紹。
三、Blink:
Flink的阿里內部版本,在大規模分佈式、SQL、TableAPI、Batch上作了大量的優化和重構。離線平臺的全部計算任務都是Blink job,包括stream和batch。
四、Soman:
UI模塊,與Bahamut後端對接,提供任務信息展現、狀態管理等可視化功能,也是用戶建立應用的開發業務邏輯的主要入口。
五、Catalog:
存儲表信息管理,提供各類數據源表的DDL能力,負責離線平臺存儲資源的申請、釋放、變動等各類功能。
六、Hippo:
阿里搜索自研的分佈式資源管理和任務調度服務,相似於Yarn,提供Docker管理能力,主要服務於在線系統。
七、Swift:
阿里搜索自研高性能分佈式消息隊列,支持億級別消息吞吐能力,存儲後端爲HDFS,存儲計算分離架構。
4、離線任務從數據源到產出引擎服務數據的整個流程,流程圖分爲三層:
一、數據同步層:
將用戶定義的數據源表的全量和增量數據同步到Hbase內部表,至關於源表的鏡像。這個鏡像中咱們包含cf和d兩個列族,分別存儲數據庫的鏡像和Daily更新的數據。
二、數據關聯計算層:
按照數據源中定義的各類關係,將不一樣維度的數據關聯到一塊兒,把數據送到自定義的UDTF中進行處理,產出引擎所需的全量和增量數據。
三、數據交互層:
提供全量和增量數據的存儲信息,與在線服務build模塊進行交互。
原文連接: