Apache Doris 助力網易嚴選打造精細化運營 DMP 標籤系統
導讀:如果說網際網路的上半場是粗狂運營,那麼在下半場,精細化運營將是長久的主題,有資料分析能力才能讓使用者得到更好的體驗。當下比較典型的分析方式是構建使用者標籤系統,本文將由網易嚴選分享 DMP 標籤系統的建設以及 Apache Doris 在其中的應用實踐。
作者|劉曉東 網易嚴選資深開發工程師
如果說網際網路的上半場是粗狂運營,因為有流量紅利不需要考慮細節。那麼在下半場,精細化運營將是長久的主題,有資料分析能力才能讓使用者得到更好的體驗。當下比較典型的分析方式是構建使用者標籤系統,從而精準地生成使用者畫像,提升使用者體驗。今天分享的主題是網易嚴選 DMP 標籤系統建設實踐,主要圍繞下面五點展開:
-
平臺總覽
-
標籤生產 :標籤圈選&生產鏈路
-
標籤儲存:儲存方式&儲存架構演進
-
高效能查詢
-
未來規劃
平臺總覽
DMP 作為網易嚴選的資料中臺,向下連線資料,向上賦能業務,承擔著非常重要的基石角色。
DMP 的資料來源主要包括三大部分:
-
自營平臺的 APP、小程式、PC 端等各端的業務日誌
-
網易集團內部共建的一些基礎資料
-
京東、淘寶、抖音等第三方渠道店鋪的資料
通過收集、清洗,將以上資料形成資料資產沉澱下來。DMP 在資料資產基礎上形成了一套自己的標籤產出、人群圈選和使用者畫像分析體系,從而為業務提供支撐,包括:智慧化的選品、精準觸達以及使用者洞察等。總的來說,DMP 系統就是構建以資料為核心的標籤體系和畫像體系,從而輔助業務做一系列精細化的運營。
瞭解 DMP 系統,先從以下幾個概念開始。
-
標籤:對於實體(使用者、裝置、手機號等)特徵的描述,是一種面向業務的資料組織形式,比如使用:年齡段、地址、偏好類目等對使用者實體進行刻畫。
-
人群圈選:通過條件組合從全體使用者中圈選出一部分使用者,具體就是指定一組使用者標籤和其對應的標籤值,得到符合條件的使用者人群。
-
畫像分析:對於人群圈選結果,檢視該人群的行為情況、標籤分佈。例如檢視【城市為杭州,且性別為女性】的使用者在嚴選 APP 上的行為路徑、消費模型等。
嚴選標籤系統對外主要提供兩大核心能力:
-
標籤查詢:查詢特定實體指定標籤的能力,常用於基本資訊的展示。
-
人群圈選:分為實時和離線圈選。圈選結果主要用於:
-
分組判斷:判讀使用者是否在指定的一個或多個分組,資源投放、觸點營銷等場景使用較多。
-
結果集拉取:拉取指定的人群資料到業務方系統中,進行定製化開發。
-
畫像分析:分析特定人群的行為資料,消費模型等,進行更精細的運營。
整體的業務流程如下:
-
首先定義標籤和人群圈選的規則;
-
定義出描述業務的 DSL 之後,便可以將任務提交到 Spark 進行計算;
-
計算完成之後,將計算結果儲存到 Hive 和 Doris;
-
之後業務方便可以根據實際業務需求從 Hive 或 Doris 中查詢使用資料。
DMP 平臺整體分為計算儲存層、排程層、服務層、和元資料管理四大模組。
所有的標籤元資訊儲存在源資料表中;排程層對業務的整個流程進行任務排程:資料處理、聚合轉化為基礎標籤,基礎標籤和源表中的資料通過 DSL 規則轉化為可用於資料查詢的 SQL 語義,由排程層將任務排程到計算儲存層的 Spark 進行計算,將計算結果儲存到 Hive 和 Doris 中。服務層由標籤服務、實體分組服務、基礎標籤資料服務、畫像分析服務四部分組成。
標籤的生命週期包含5個階段:
-
標籤需求:在此階段,運營提出標籤的需求和價值預期,產品評估需求合理性以及緊迫性。
-
排期生產:此階段需要資料開發梳理資料,從 ods 到 dwd 到 dm 層整個鏈路,根據資料建立模型,同時資料開發需要做好質量監控。
-
人群圈選:標籤生產出來之後進行應用,圈選出標籤對應的人群。
-
精準營銷:對圈選出來的人群進行精準化營銷。
-
效果評估:最後產品、資料開發和運營對標籤使用率、使用效果進行效果評估來決定後續對標籤進行改進或降級。
總的來說,就是以業務增長為目標,圍繞標籤的生命週期,投入合理的資源,最大化運營效果。
標籤生產
接下來介紹標籤生產的整個過程。
標籤的資料分層:
-
最下層是 ods 層,包括使用者登入日誌、埋點記錄日誌、交易資料以及各種資料庫的 Binlog 資料。
-
對 ods 層處理後的資料到達 dwd 明細層,包括使用者登入表、使用者活動表、訂單資訊表等。
-
dwd 層資料聚合後到 dm 層,標籤全部基於 dm 層資料實現。
目前我們從原始資料庫到 ods 層資料產出已經完全自動化,從 ods 層到 dwd 層實現了部分自動化,從 dwd 到 dm 層有一部分自動化操作,但自動化程度還不高,這部分的自動化操作是我們接下來的工作重點。
標籤根據時效性分為:離線標籤、近實時標籤和實時標籤。
根據聚合粒度分為:聚合標籤和明細標籤。
通過類別維度可將標籤分為:賬號屬性標籤、消費行為標籤、活躍行為標籤、使用者偏好標籤、資產資訊標籤等。
直接將 dm 層的資料不太方便拿來用,原因在於:
基礎資料比較原始,抽象層次有所欠缺、使用相對繁瑣。通過對基礎資料進行與、或、非的組合,形成業務標籤供業務方使用,可以降低運營的理解成本,降低使用難度。
標籤組合之後需要對標籤進行具體業務場景應用,如人群圈選。配置如上圖左側所示,支援離線人群包和實時行為(需要分開配置)。
配置完後,生成上圖右側所示的 DSL 規則,以 Json 格式表達,對前端比較友好,也可以轉成儲存引擎的查詢語句。
標籤有一部分實現了自動化。在人群圈選部分自動化程度比較高。比如分組重新整理,每天定時重新整理;高階計算,如分組與分組間的交/並/差集;資料清理,及時清理過期失效的實體集。
標籤儲存
下面介紹一下我們在標籤儲存方面的實踐。
嚴選 DMP 標籤系統需要承載比較大的 C端流量,對實時性要求也比較高。
我們對儲存的要求包括:
-
支援高效能查詢,以應對大規模 C端流量
-
支援 SQL,便於應對資料分析場景
-
支援資料更新機制
-
可儲存大資料量
-
支援擴充套件函式,以便處理自定義資料結構
-
和大資料生態結合緊密
目前還沒有一款儲存能夠完全滿足要求。
我們第一版的儲存架構如下圖所示:
離線資料大部分儲存在 Hive 中,小部分儲存在 Hbase(主要用於基礎標籤的查詢)。實時資料一部分儲存在 Hbase 中用於基礎標籤的查詢,部分雙寫到 KUDU 和 ES 中,用於實時分組圈選和資料查詢。離線圈選的資料通過 impala 計算出來快取在 Redis 中。
這一版本的缺點包括:
-
儲存引擎過多。
-
雙寫有資料質量隱患,可能一方成功一方失敗,導致資料不一致。
-
專案複雜,可維護性較差。
為了減少引擎和儲存的使用量,提高專案可維護性,在版本一的基礎上改進實現了版本二。
我們第二版的儲存架構如下圖所示:
儲存架構版本二引入了 Apache Doris,離線資料主要儲存在 Hive 中,同時將基礎標籤匯入到 Doris,實時資料也儲存在 Doris,基於 Spark 做 Hive 加 Doris 的聯合查詢,並將計算出來的結果儲存在 Redis 中。經過此版改進後,實時離線引擎儲存得到了統一,效能損失在可容忍範圍內(Hbase 的查詢效能比 Doris 好一些,能控制在 10ms 以內,Doris 目前是 1.0 版本,p99,查詢效能能控制在 20ms 以內,p999,能控制在 50ms 以內);專案簡化,降低了運維成本。
在大資料領域,各種儲存計算引擎有各自的適用場景,如下表所示:
高效能查詢
分組存在性判斷:判斷使用者是否在指定的一個分組或者多個分組。包括兩大部分:
-
第一部分為靜態人群包,提前進行預計算,存入 Redis 中(Key 為實體的 ID,Value 為結果集 ID),採用 Lua 指令碼進行批量判斷,提升效能;
-
第二部分為實時行為人群,需要從上下文、API 和 Apache Doris 中提取資料進行規則判斷。效能提升方案包括,非同步化查詢、快速短路、查詢語句優化、控制 Join表數量等。
還有一個場景是人群分析:人群分析需要將人群包資料同多個表進行聯合查詢,分析行為路徑。目前 Doris 還不支援路徑分析函式,因此我們開發了 DorisUDF 來支援此業務。Doris 的計算模型對自定義函式的開發還是很友好的,能夠比較好地滿足我們的效能需要。
Apache Doris 在網易嚴選中已應用於點查、批量查詢、路徑分析、人群圈選等場景。在實踐中具備以下優勢:
-
在點查和少量表的聯合查詢效能 QPS 超過萬級,RT99<50MS。
-
水平擴充套件能力很強,運維成本相對比較低。
-
離線資料和實時資料相統一,降低標籤模型複雜度。
不足之處在於大量小資料量的匯入任務資源佔用較多,不過此問題已經在 Doris 1.1 版本中進行了優化,**Doris 在 1.1 中大幅增強了資料 Compaction 能力,對於新增資料能夠快速完成聚合,避免分片資料中的版本過多導致的 -235 錯誤以及帶來的查詢效率問題。**待 Doris 1.1.2 版本正式釋出後我們也會及時同步升級。
具體可以參考:Apache Doris 1.1 特性揭祕:Flink 實時寫入如何兼顧高吞吐和低延時
未來規劃
提升儲存&計算效能:Hive 和 Spark 逐漸全部轉向 Apache Doris。
優化標籤體系:
-
建立豐富準確的標籤評價體系
-
提升標籤質量和產出速度
-
提升標籤覆蓋率
更精準的運營
-
建立豐富的使用者分析模型
-
從使用頻次和使用者價值兩個方面提升使用者洞察模型評價體系
-
建立通用化畫像分析能力,輔助運營智慧化決策
資料下載
關注公眾號「SelectDB」,後臺回覆【網易嚴選】獲取本次演講 PPT 資料!
如果你對 Apache Doris 感興趣,請點選「 **閱讀原文 」瞭解並加入 Doris!我們也發起了徵文活動****,**邀你講講與Doris相遇 相知 相識的故事,不僅有精美禮品相送,還可獲得 SelectDB 全渠道曝光加持!
最後,歡迎更多的開源技術愛好者加入 Apache Doris 社群,攜手成長,共建社群生態。
SelectDB 是一家開源技術公司,致力於為 Apache Doris 社群提供一個由全職工程師、產品經理和支援工程師組成的團隊,繁榮開源社群生態,打造實時分析型資料庫領域的國際工業界標準。基於 Apache Doris 研發的新一代雲原生實時數倉 SelectDB,運行於多家雲上,為使用者和客戶提供開箱即用的能力。
相關連結:
SelectDB 官方網站:
Apache Doris 官方網站:
Apache Doris Github:
http://github.com/apache/doris
Apache Doris 開發者郵件組:
- 打破資料孤島,Apache Doris 助力縱騰集團快速構建流批一體數倉架構
- 實時分析全面賦能金融業務,馬上消費基於 Apache Doris 構建實時數倉的實踐
- 更高效能表現、更低資源佔用,高精度計算資料型別 DecimalV3 揭祕
- Java UDF 的設計與使用介紹,相容 Hive UDF 實現資料快速遷移
- 下一個十年,我們需要一款什麼樣的分析型資料庫?
- 更穩定!Apache Doris 1.2.1 Release 版本正式釋出|版本通告
- Apache Doris 在小米億級使用者行為分析平臺的實踐|最佳實踐
- 複雜查詢響應速度提升10 倍,度言軟體基於 Apache Doris 實時數倉建設實踐
- 併發提升 10 倍,運算延時降低 70%,領健從 ClickHouse 和 Kudu 到 Apache Doris 數倉升級實踐
- 10x 查詢效能提升,全新 Unique Key 的設計與實現|1.2 新版本解讀
- 全面進化!Apache Doris 1.2.0 Release 版本正式釋出|版本通告
- 重構實時離線一體化數倉,Apache Doris 在思必馳的應用實踐
- 全球第一!新一代雲原生實時數倉 SelectDB 登頂 ClickBench 榜單!
- 如何進行 Apache Doris 叢集 Docker 快速部署
- 開源指南|如何從零開始參與 Apache 頂級開源專案?(二)
- 恭喜 SelectDB 三位開發者成為 Apache Doris 新晉 Committer!
- 如何高效解決 C 記憶體問題,Apache Doris 實踐之路|技術解析
- 如何從零開始參與 Apache 頂級開源專案?| 牆裂推薦
- Apache Doris 助力網易嚴選打造精細化運營 DMP 標籤系統
- 最佳實踐|Apache Doris 在小米資料場景的應用實踐與優化