1)提升查詢效率 自動探測 SQL 複雜查詢條件預先合併成一個派生特征的 bitmap,預測和圈人時對複雜條件 SQL 重寫為派生特征。 2)提升導入速度 Spark 直接寫 Doris Tablet 文件,並掛載到 FE。 針對大導入場景與 Doris 團隊共建,提升寫入效... ...
一、背景
知乎業務中存在哪些問題需要解決?
為什麼要建立 DMP 平臺來解決這些問題?
2、DMP 業務流程
當前這些業務的運營流程是怎樣的?
DMP 如何與業務結合併賦能?
其中運營模式包含如下 3 類:
1)站內運營自閉環
-
內容運營。拿內容找用戶,定向消費用戶,站內投放,分析效果和人群成分等。
-
活動運營。拿活動找用戶,定向消費用戶,站內投放,分析效果和人群成分等。
-
用戶運營。洞察用戶,分析。
2)站內向站外投放閉環
-
增長投放。定向合適的人群,併在站外投放廣告,數據回收,效果分析。
3)站外向站內廣告閉環
-
廣告投放。站外用戶導入,定向投放。或基於對目標群體的理解圈選定向投放。
3、DMP 畫像特征
當前有哪些畫像特征?
這些特征是如何分層分類的?
量級如何?
3 層級特征分類:
一級分類 (8 組)
二級分類 (40 組)
標簽組(120 個)
性別、手機品牌、話題興趣…
標簽(250 萬)
男|女、 HUAWEI|Apple、對影視內容感興趣程度高…
二、架構與實現
1、DMP 功能梳理
DMP 通過設計哪些功能模塊,支持相應的業務流程?
2、DMP 架構
DMP 通過設計哪些功能模塊,支持相應的業務流程?
架構設計重點是解決業務功能的實現複雜度,同時架構設計也是明確模塊重心和設計目標的一種重要手段。拆分後,不同模塊都有不同的設計重心:
1)對外模塊。針對使用方定製設計。
-
DMP 介面:高穩定性、高併發高吞吐
-
DMP 前臺:操作簡單,低運營使用成本
-
DMP 後臺:日常開發工作配置化,降低開發成本
2)業務模塊。以可擴展為第一要務。
-
人群圈選:可擴展。新增特征 0 成本,新增規則低成本。
-
人群洞察:可擴展。新增特征 0 成本,新增洞察方式低成本。
-
人群泛化:可擴展。新增泛化方式低成本。
3)業務支持模塊。線性水平擴展及屏蔽內部邏輯。
-
特征生產:擴展成本低。原子特征低成本生產,派生特征通過後臺可配置
-
ID Mapping:屏蔽 ID 打通邏輯
-
計算任務運維:屏蔽機器資源和任務依賴的邏輯
-
存儲:可擴展可持續,不因業務成長而導致成本大幅增加
3、DMP 平臺功能盤點
DMP 上線至今支持了:
-
5+ 萬人群定向
-
400+ 次人群洞察
-
60+ 次人群泛化
數據量級:
-
120 個標簽組
-
250 萬個標簽
-
1100 億條用戶 x 標簽的數據
數據量級:
-
每日 2.x TB 共 5 日 11 TB(離線、實時)特征(Doris)
-
120 個離線生產任務和 5 個實時生產任務
-
每日 6100 次人群預估,300 個人群圈選,1-2 個人群洞察,1 個人群泛化任務
4、特征數據鏈路及存儲
DMP 的批量、流式特征如何建設並落地到相應的存儲?
數據量級:
1)特征鏈路
-
離線 Spark:Hive -> 特征抽取 -> 離線標簽 -> mapping -> Doris / ES / HDFS
-
實時 Flink:Kafka -> 特征抽取 -> 實時標簽 -> mapping -> Doris / ES / HDFS
2)存儲
① Doris
-
用戶 x 標簽:用戶有哪些標簽(1100 億)
-
id mapping:id 轉化寬表(8.5 億)
② ElasticSearch
-
標簽枚舉表:標簽中文信息及搜索(250 萬)
5、人群定向流程
人群定向分哪幾個過程?怎麼做的?
子流程:標簽搜索、標簽選擇、人群預估、人群圈選
子流程:種子人群上傳、人群泛化
流程圖中主要介紹了:標簽搜索、標簽選擇、人群預估、人群圈選、種子人群上傳、人群泛化幾個子流程的執行過程。具體在業務上執行的人群定向流程很多,以下說幾種典型的:
-
標簽加購物車 -> 圈選。
-
傳種子人群 -> 泛化。
-
歷史效果人群 -> 泛化 -> 疊加本次運營特點 -> 圈選。
-
歷史效果人群 -> 洞察 -> 重新生成標簽關係 -> 圈選 -> 疊加歷史正向人群 -> 泛化 -> 限制分發條件 -> 圈選。
-
對標簽、歷史人群進行組合、泛化、再限制條件再圈選、洞察,最後再調整等等。
三、難題及解決方案
在 DMP 業務中,我們主要遇到了人群定向方面的難題,難題的原因主要有:1、人群特征數量大(1200 億);2、時間要求低(人群預估 1 秒,圈選 1 分鐘)。
1、優化第一版
倒排、id mapping 以及查詢邏輯優化
2、優化第二版
分而治之
-
將連續一塊的用戶 id 的不同 tag 的數據,都增加統一的 group 欄位進行分組。
-
在 group 內完成交並差後,最後進行數據彙總。
-
同時開啟多線程模式,提升每組的計算效率。
四、未來及展望
1、業務向
2、技術向
1)提升查詢效率
-
自動探測 SQL 複雜查詢條件預先合併成一個派生特征的 bitmap,預測和圈人時對複雜條件 SQL 重寫為派生特征。
2)提升導入速度
-
Spark 直接寫 Doris Tablet 文件,並掛載到 FE。
-
針對大導入場景與 Doris 團隊共建,提升寫入效率。
本文來自博客園,作者:古道輕風,轉載請註明原文鏈接:https://www.cnblogs.com/88223100/p/Easy-storage-of-billions-of-data-Zhihu-DMP-system-architecture-practice-based-on-Doris.html