Apache Doris在京東廣告的應用實踐

2021-01-10 DorisDB

1、序言

本文主要介紹Apache Doris在京東廣告報表查詢場景下的應用。文章將從我們原有系統開始講述,包括我們遇到的問題,面臨的挑戰,以及我們為何選擇使用Apache Doris。最後將介紹Doris在我們在生產環境下的使用情況,包括Apache Doris在京東「618」,「雙11」大促中的表現。希望通過我們的使用實踐為大家提供一些經驗參考,也歡迎大家對我們的不足之處提出建議。

2、背景介紹

京準通是京東集團旗下的廣告營銷推廣平臺。我們團隊主要負責京準通平臺的報表查詢服務,主要為廣告主/運營/採銷等提供實時/離線的報表的查詢,支持了十餘個業務線,300多張報表,覆蓋了京準通內絕大多數效果報表,每日千萬級查詢總量,百億級數據增量,毫秒級的查詢耗時。

3、原有系統存在的問題

我們原來有一套京東廣告自己內部開發廣告效果數據查詢系統,可以支持數據預聚合,支持原子導入,支持按列建立Rollup表。由於這些特性的原因,原有系統在廣告效果數據報表的特定場景下,可以滿足日常線上查詢的需求。

但隨著業務的迭代,上層查詢系統對我們的要求越來越高,主要表現以下幾個方面:

1. 原有系統已經逐漸無法滿足我們日常業務的性能需求。

2. 日常業務所需的Schema Change,Rollup等操作,在原有系統上有極高的人力成本。

3. 原有系統的數據無法遷移,擴容需要重刷全部歷史數據,運維成本極高。

4. 在「618」和「雙11」的時候,原有系統會成為我們對外服務的一個隱患。

因此我們需要一個合適的數據查詢引擎來替代我們原有系統,考慮到我們團隊的人力和研發能力,我們選擇使用開源的OLAP引擎來替換原有系統。

4、技術選型

這裡簡單介紹我們日常操作的關注的痛點,也是我們在之後技術選型方面主要考慮的方面。

查詢

我們為廣告主提供在線報表數據查詢服務,因此該OLAP查詢引擎必須滿足:可以支持高並發查詢,可以毫秒級返回數據,且可以隨著業務的發展水平擴展。此外我們也承接了越來越多運營和採銷同事的多維數據分析的需求,因此希望該OLAP引擎也可以支持高吞吐的Ad-hoc查詢。

數據導入

我們需要同時支持離線(T+1)大規模數據和實時(分鐘級間隔)數據的導入,數據導入後即可查詢,保證數據導入的實時性和原子性。離線數據(幾十G)的導入任務需要在1小時內完成,實時數據(百M到幾G)的導入任務需要在10分鐘內完成。

擴容

在「618」這類大促前我們通常會進行擴容,因此需要新系統擴容方便,無需重刷歷史數據來重新分布數據,且擴容後原有機器的數據最好可以很方便地遷移到新機器上,避免造成數據傾斜。

根據日常業務的需要,我們經常會進行Schema Change操作。由於原有系統對這方面的支持很差,我們希望新系統可以進行Online Schema Change,且對線上查詢無影響。

數據修復

由於業務的日常變更會對一些表進行數據修復,因此新系統需要支持錯誤數據的刪除,從而無需重刷全部歷史數據,避免人力和計算資源的浪費。

目前開源的OLAP引擎很多,但由於面臨大促的壓力,我們需要儘快完成選型並進行數據遷移,因此我們只考察了比較出名的幾個OLAP系統:ClickHouse,Druid和Doris。最終我們選擇了Doris來替換我們的原有系統,主要基於以下幾方面的考慮:

1. Doris的查詢速度是亞秒級的,並且相對ClickHouse來說,Doris對高並發的支持要優秀得多。

2. Doris擴容方便,數據可以自動進行負載均衡,解決了我們原有系統的痛點。ClickHouse在擴容時需要進行數據重分布,工作量比較大。

3. Doris支持Rollup和Online Schema Change,這對我們日常業務需求十分友好。而且由於支持MySQL協議,Doris可以很好地和之前已有的系統進行融合。而Druid對標準SQL的支持有限,並且不支持MySQL協議,對於我們來說改造成本很高。

5、廣告場景應用

經過對我們系統的改造,目前我們使用Doris作為我們系統中的一個數據存儲層,匯總了離線和實時數據,也為上層查詢系統提供統一的效果數據查詢接口。如下圖所示:

數據導入

我們日常實時數據主要包含展現/點擊跟單數據,DMP人群包的效果數據以及十幾條產品線的點擊,展現和消耗數據,導入時間間隔從1分鐘到1小時不等,數據量在百M左右的可以秒級導入,數據量在1G左右的可以在1分鐘內完成。離線數據主要包含搜索詞的效果數據和各種營銷工具的基礎數據,大多數都是T+1數據,每日新增數據量在20G-30G,導入耗時在10-20分鐘。

預計算

對於我們的大多數效果數據報表,廣告主的查詢維度相對固定且可控,但要求能在毫秒級返回數據,所以必須保證這些查詢場景下的性能。Doris支持的聚合模型可以進行數據的預聚合,將點擊,展現,消耗等數據匯總到建表時指定的維度。

此外,Doris支持建立Rollup表(即物化視圖)也可以在不同維度上進行預聚合,這種自定義的方式相比Kylin的自動構建cube,有效避免了數據的膨脹,在滿足查詢時延的要求下,降低了磁碟佔用。Doris還可以通過Rollup表對維度列的順序進行調整,避免了Kylin中因過濾維度列在HBase RowKey後部而造成的查詢性能低下。

現場計算

對於一些為廣告主提供的營銷工具,維度和指標通常會有30~60列之多,而且大部分查詢要求按照所有維度列進行聚合,由於維度列較多,這種查詢只能依賴於現場計算能力。目前我們對於這種類型的查詢請求,會將其數據儘量均勻分布到多臺BE上,利用Doris MPP架構的特性,並行計算,並通過控制查詢時間範圍(一個月),可以使TP99達到3s左右。

業務舉例

正是由於Doris具有自定義的預計算能力和不俗的現場計算能力,簡化了我們的日常工作。以我們為廣告主提供的營銷工具「行業大盤」為例,如圖所示,這種業務場景下,不僅要計算廣告主自身的指標數據,還需計算廣告主所在類目的指標數據,從而進行對比。

原有系統數據分片只能按照指定列進行散列,沒有分布式查詢計劃,就不能匯總類目維度數據。原先為了解決這種業務場景,雖然底層是同一數據源,但我們需要建兩個表,一個是廣告主維度表,一個是類目維度表,維護了兩個數據流,增大了工作負擔。

使用了Doris之後,廣告主維度表可以Rollup出類目維度表。查詢廣告主維度數據時可以根據分區分桶(按照時間分區,按照廣告主ID分桶)確定一個Tablet,縮小數據查詢範圍,查詢效率很高。查詢類目維度時,數據已經按照廣告主ID進行分片 ,可以充分利用Doris現場計算的能力,多個BE並行計算,實時計算類目維度數據,在我們的線上環境也能實現秒級查詢。這種方案下數據查詢更加靈活,無需為了查詢性能而維護多個預計算數據,也可以避免多張表之間出現數據不一致的問題。

6、實際使用效果

日常需求

– Doris支持聚合模型,可以提前聚合好數據,對計算廣告效果數據點擊,展現和消耗十分適合。對一些數據量較大的高基數表,我們可以對查詢進行分析,建立不同維度或者順序的的Rollup表來滿足查詢性能的需求。

– Doris支持Online Schema Change,相比原有系統Schema Change需要多個模塊聯動,耗費多個人力數天才能進行的操作,Doris只需一條SQL且在較短時間內就可以完成。對於日常需求來說,最常見的Schema Change 操作就是加列,Doris對於加列操作使用的是Linked Schema Change方式,該方式可以無需轉換數據,直接完成,新導入的數據按照新的Schema進行導入,舊數據可以按照新加列的默認值進行查詢,無需重刷歷史數據。

– Doris通過HLL列和BITMAP列支持了近似/精確去重的功能,解決了之前無法計算UV的問題。

– 日常數據修復,相較於以前有了更多的方式可以選擇。對於一些不是很敏感的數據,我們可以刪除錯誤數據並進行重新導入;對於一些比較重要的線上數據,我們可以使用Spark on Doris計算正確數據和錯誤數據之間的差值,並導入增量進行修復。這樣的好處是,不會暴露一個中間狀態給廣告主。我們還有一些業務會對一個或多個月的數據進行重刷。我們目前在測試使用Doris 0.12版本提供的Temp Partition功能,該功能可以先將正確數據導入到Temp Partition中,完成後可以將要刪除的Partition和Temp Partition進行交換,交換操作是原子性的,對於上層用戶無感知。

大促備戰

– Doris添加新的BE節點後可以自動遷移Tablet到新節點上,達到數據負載均衡。通過添加FE節點,則可以支撐更高的查詢峰值,滿足大促高並發的要求。

– 大促期間數據導入量會暴增,而且在備戰期間,也會有憋單演練,在短時間內會產生大量數據導入任務。通過導入模塊限制Load的並發,可以避免大量數據的同時導入,保證了Doris的導入性能。

– Doris在我們團隊已經經歷了數次大促,在所有大促期間無事故發生,查詢峰值4500+qps,日查詢總量8千萬+,TP99毫秒級,數據日增量近300億行,且實時導入數據秒級延遲。

使用實踐

– Doris支持低延時的高並發查詢和高吞吐的Ad-hoc查詢,但是這兩類查詢會相互影響,遷移到Doris的初期日常線上的主要問題就是高吞吐的查詢佔用資源過多,導致大量低延時的查詢超時。後來我們使用兩個集群來對兩類查詢進行物理隔離,解決了該問題。

– Doris在0.11版本時FE的MySQL服務IO線程模型較為簡單,使用一個Acceptor+ThreadPool來完成MySQL協議的通信過程,單個FE節點在並發較高(2000+qps左右)的時候會出現連接不上的問題,但此時CPU佔用並不高。在0.12版本的時候,Doris支持了NIO,解決了這個問題,可以支撐更高的並發。也可以使用長連接解決這個問題,但需要注意Doris默認對連接數有限制,連接佔滿了就無法建立新的連接了。

7、總結

通過一年多時間的生產環境使用,Doris滿足了我們日常使用的需求,並通過了多次大促的考驗,證明了其在廣告效果數據場景下適用性,和高並發場景下的可靠性。在日常使用中,其良好的設計也大大降低我們的維護成本,縮短了我們日常業務的開發時間。Doris已經成為了京東廣告的核心系統之一。

當前Doris已經逐漸成熟,其周邊的生態也越來越完善,未來可以在更多業務場景下進行嘗試。Doris研發團隊的核心成員組建了鼎石科技,不僅對Apache Doris有更強的支持,而且他們研發的企業版產品,相對於開源版本功能更加完善,性能也更加卓越。在使用Doris的過程中,鼎石科技的小夥伴們也給予了我們很大的幫助。

未來,我們會進一步探索Doris在廣告其他方面的應用,包括廣告物料數據方面等。期待Doris的功能和性能進一步提升,最終成為解決數據分析問題的統一平臺。

相關焦點

  • Apache Doris 在 WeLab實時大數據平臺的應用實踐
    它具有管理自動化、流程化、規範化、智能化等特點,並能夠支撐更輕量、靈活、低門檻並快速迭代的大數據應用。在這個大數據平臺體系中,Apache Doris主要支撐了兩個重要的場景:實時自助BI報表和用戶運營分析。2、實時自助BI報表在大數據平臺建設初期,我們完全依賴Hadoop技術生態,利用離線計算提供分析服務。
  • Apache Doris在雲真信智能決策分析平臺的應用實踐
    公司擁有強大的數據挖掘與整合、提供優勢的泛金融領域整體化解決方案的能力;自設立以來,已與多家大型國有銀行、商業銀行以及大型持牌消金機構等建立了深度的合作關係,打造了客戶信賴的產品服務體系;同時擁有一支在數據科學、人工智慧、金融風控等領域具備豐富的理論和實踐經驗的核心管理團隊;近期,雲真信連續獲評國家高新技術企業、2020中國金融創新獎十佳智能風控創新獎,標誌著權威認證機構對雲真信技術能力和創新能力的高度認可
  • 著名開源項目Apache Doris開發者徐冬奇加入微博廣告技術團隊
    DoNews 6月9日消息(記者 程夢玲)著名開源項目、在線分析型分布式資料庫Apache Doris的主要開發者,原百度鳳巢廣告系統高級架構師、阿里巴巴數據智能商業化技術負責人徐冬奇,已於近日入職微博廣告技術團隊,擔任微博廣告技術總架構師。
  • 如何在Web應用中實現Velocity 與Struts 框架相互集成的應用實例
    J2EE Web應用系統的設計和開發人員通過應用Velocity Tools中相關的組件,不僅可以將Velocity 模板引擎應用於普通的J2EE Web應用系統環境中,也還可以與J2EE系統平臺中的各種應用框架相互集成,從而也允許將Velocity 模板引擎應用於如Struts和Struts2、Spring等應用框架的環境中。
  • Apache Shiro 反序列化之殤
    我們在程序登陸成功處打個斷點org.apache.shiro.mgt.AbstractRememberMeManager#onSuccessfulLogin,先來分析rememberMe值的加密過程,然後瀏覽器進行登陸帳戶root
  • SpringCloud Feign:使用ApacheHttpClient代替默認client
    ;groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <dependency> <groupId>org.apache.httpcomponents
  • 機器學習平臺搭建及應用分享
    分享內容09:00-09:40vGPU應用機器學習平臺小米人工智慧軟體工程師紀少敏09:45-10:25九數算法平臺探索與創新實踐京東算法工程師牛文杰10:30-11:10曠視Brain++平臺訓練數據供給系統的架構和設計曠視科技高級研發工程師楊陽11:15-11:55京東超大規模聯邦學習平臺 ( 9N-FL )在電商營銷領域的實踐
  • 「網絡安全」關於Apache Shiro權限繞過高危漏洞的 預警通報
    由於shiro在處理url時與spring存在差異,處理身份驗證請求時出錯導致存在身份校驗繞過漏洞,遠程攻擊者可以發送特製的HTTP請求,繞過身份驗證過程並獲得對應用程式的未授權訪問。二、影響範圍 Apache Shiro < 1.6.0。
  • 趣頭條在安卓應用商店下架;嗨學網回應退費難;京東蘇寧天貓平臺...
    首頁 > 見聞 > 關鍵詞 > 趣頭條最新資訊 > 正文 趣頭條在安卓應用商店下架;嗨學網回應退費難;京東蘇寧天貓平臺下架永亮毛巾
  • 京東金融的這個廣告為什麼討人厭?
    京東金融下線的涉事短視頻廣告截圖 文|翠鳥資本 最近網際網路巨頭麻煩不斷,今天先來說說京東金融。 京東數科旗下的京東金融,就上演了一幕將網絡借貸搬上萬裡高空的「好戲」,再次刷新了低俗營銷的下限。 雖然京東公開道歉,並且撤下了這則視頻廣告,但仍然招來廣大網友的一片罵聲。
  • 京東的惡俗廣告,不是土,而是壞
    阿里被監管瘋狂折磨,京東仿佛看到了機遇。想利用這個「紅利期」,瘋狂推銷自己的產品。但最近,京東金融卻因為一則廣告道歉。原因和阿里差不多——收割百姓的姿勢過於豐富。我們來看看它的表演。112月17日,京東為一則金融廣告道歉:迷失了自我,喪失了責任,丟掉了初心……什麼樣的廣告呢?借貸。
  • 廣告學作為實踐性極強的應用課程,必須與實踐緊密結合
    「廣告學」教學模式創新:廣告學作為實踐性極強的應用課程,必須與實踐緊密結合。在教學中不但要傳授基本的廣告理論與實務,還要講授業界最前沿的專業信息,同時引導學生充分發揮想像力,讓學生以開放的心態面對廣告理論與方法,提高他們的創造力,而不僅僅是全盤照搬書本上的廣告理論和方法。為此,要從教學方法創新入手,充分運用不同的教學方法,提升學生的學習興趣及創意能力。
  • Flink萬字乾貨:4大發展方向,美團、快手應用實踐(PDF下載)
    尤其值得一提的是 Flink 中文社區的繁榮發展:Flink 是當前 Apache 頂級項目中唯一一個開通了中文郵件列表(user-zh@flink.apache.org)的項目,且中文郵件列表的活躍度已超過英文郵件列表;Flink 的官方公眾號訂閱數超過 3 萬人,全年推送超過 200 篇和 Flink 技術,生態以及實踐相關的最新資訊。
  • 《愛的迫降》現京東廣告,操盤公司揭秘借韓劇出海之道
    《愛的迫降》大結局中,給觀眾留下深刻印象的,除了瑞士的風光,恐怕就是京東的植入廣告了。如果說之前的植入還是「暗搓搓」的,那麼最後一集的亮相實在太剛了,簡直是實力搶鏡。實際上,這已經不是京東第一次植入韓劇了,此前在玄彬主演的韓劇《海德、哲基爾與我》和《阿爾罕布拉宮的回憶》中,京東都有出現。
  • 京東沙雕童話廣告,其實還能做得更好
    腦洞與邏輯可兼得,童話廣告其實可以做得更好在上述分析中,我們可以看到京東系列廣告其實是拿到了一個還不錯的「劇本」,但是在具體執行上稍微有些脫節。在橫向對比下面兩則較為成功的類似案例後,咱鬥膽提幾點建議,或許能夠幫助它有所改善。
  • 廣告被指「三觀不正」?網友痛批,京東致歉
    京東金融短視頻廣告事件不僅僅是管理審核的問題,更是操作團隊的導向、文化和價值觀出了問題,一味的為了追求業績,迷失了自我,喪失了責任,丟掉了初心!京東集團已經對該事件成立了專門的調查小組,將從源頭查起,不放過每一個環節,圍繞組織、機制、流程進行全方位診斷,從團隊文化的根源深處找問題,並對相關管理者和責任人進行嚴肅處理!
  • 京東金融廣告事件:背後隱藏的不僅僅是誘導與歧視
    近日,京東金融因借貸廣告讓農民工借錢升艙引發網友熱議。京東金融致歉稱,「存在嚴重價值觀問題,將承擔全部責任」。 京東的道歉充滿誠意,但事件的熱度持續發酵,演變成了一場對網際網路金融的群體聲討。
  • 探索與實踐·在線精品課|廣告設計,一場與繆斯的邂逅
    我們更願意將這門課稱之為:繆斯在產品廣告設計中起舞。「視覺傳達設計是運用視覺元素來進行溝通說服的社會實踐活動。它的靈魂就是實踐應用。只有這樣,才能培養出行業需求的好設計師。」主持多個設計實踐項目。「數位技術是基礎,創新能力是靈魂。沒有創意、不能創造視覺美感的技術註定無法長遠。在注重創意表現的傳統廣告設計領域,數字媒體藝術將成為它轉型騰飛的翅膀。」
  • 8.8氫資訊:劉強東前女友重返京東,網際網路廣告必須標明"廣告" 不可用"推廣",微信公眾號或將推出付費訂閱功能
    今日看點:網際網路廣告必須標明「廣告」,不可改用「推廣」劉強東前女友龔曉京重返京東
  • ...京東借錢廣告引發巨大爭議,官方致歉;羅永浩承認直播間售假|...
    (新浪科技)京東金融就爭議廣告短視頻致歉,承認多條短視頻存在嚴重的價值觀問題,現已下線近日,槽點滿滿的京東金融廣告投放於某短視頻平臺,相關廣告因其中價值觀取向及惡意推銷借貸服務等問題引發輿論爭議。這並非網際網路金融平臺第一次因廣告問題引發爭議。此前,360集團下屬360借條和螞蟻集團旗下花唄同樣因廣告內容也引發了巨大爭議。