實時離線平臺Pora介紹@2015

之奇發表於2016-01-11

概述

      Pora是Personal Offline Realtime Analyze的簡稱。

      幾年前,淘寶的搜尋結果已經不再千人一面的商品排序,而是深度融合了使用者的個性化偏好的搜尋結果。而實時變化的使用者行為,能幫助演算法更好地預測使用者接下來的個性化偏好。為此需要一個系統能實時地獲取使用者行為,並支援演算法實時修改使用者或商品的個性化資訊。這個系統開始了,叫做Pora。

      整個搜尋pipeline上看,Pora位於引擎的離線部分。設計Pora的一個目標是實時處理流資料。因此Pora必須同時具備海量資料處理(高吞吐)和實時(低延遲)。除此之外,Pora還需要成為一個平臺。眾多演算法模組可以執行、靈活調整和實時生效。

      Pora在搜尋實時計算體系的位置,見圖1:

搜尋實時計算體系

圖1.搜尋實時計算體系

 

  

Pora總體架構

     從誕生以來,Pora經過了多次演變。 最初是storm叢集上開發的應用。2014年遷移到Yarn叢集,IStream作為流計算框架。2015年,Pora做了Tec重構。業務不斷擴充套件,從簡單的使用者維度性別個性化到商品維度個性化,再到如今同時支援使用者和商品兩個維度多個場景的個性化,支援實時反作弊、推薦、賽馬等業務。2015年開始有線上學習框架,現有LR/FTRL演算法和實時矩陣分解演算法。

     目前的Pora總體架構,如下圖2:

Pora總體架構

 

圖2.Pora總體架構

 

2015年Pora的重要改動

1. 基於Tec重構

       原有Pora的核心層獨立出來,稱為Tec專案。Pora定位業務邏輯和演算法介面,開發更簡潔。Tec是輕量級實時計算框架,支援快速開發高吞吐、低延遲的實時應用。例如AliExpress(AE)搜尋的離線資料庫Dump業務,基於Tec實現了小時批量到秒級實時的跨越。
      
 
Tec


圖3. Pora的技術堆疊

2.線上學習

      資料和模型是演算法的兩大核心,14年基於Pora,實現了資料的實時更新。15年在Pora上開發了基於Parameter Server架構的線上學習框架,實現了模型的實時更新。

      圖3是Pora內部的線上學習框架,工作機理參考Google的DownPour SGD。特點是非同步,並行,平臺化。Parameter Server由Feature Worker和Hbase Model Storage實現。
      線上學習的演算法,詳見文章《搜尋雙鏈路實時計算體系@雙11實戰》[5]

線上學習框架
圖3. 線上學習框架

 

3.  7*24小時執行

      iStream0.9版本開始支援熱切換配置,不用重啟應用。主搜Dump在2015年實現了24小時增量。這兩個基礎完備後,Pora之前的凌晨停頓去掉了,使用者個性化,推薦資料等都是24小時執行無延遲。在日常執行,處理資料延遲在秒級,演算法改動配置只需要執行熱切換命令。

 

4. 效能優化

      Pora整體QPS,2014年雙11峰值94萬。到了2015年雙11期間,峰值達到501萬。2015年雙11當晚的零點流量高峰,Pora各應用無延遲,完成整條鏈路處理是秒級。整體QPS的提升,看著只有5倍多點,如果考慮業務的增長,效能的提升是不止的。

     效能的提升,離不開離線組和莫問團隊在Yarn/HDFS/iStream/HQueue/Hbase的重要優化,以及CM8/ET2叢集的資源優化。這裡節約篇幅,就講一下Pora上的業務優化和系統優化。

  • 業務優化:搜尋PV日誌的處理鏈精簡和儲存IO優化。直接讀取htable,避開HSF限流的超時。auctionProfile表的userTag維度統計,去掉不需要的業務日誌。
  • 系統優化:htable的client端增加cache,雙十一當天高峰時段cache的平均命中率達到85%。優化Hqueue和Htable的配置,提高IO效能。解決auction/user/sync應用混合執行的機器熱點。

 

將來

     今後有新的目標,敬請期待2016年。

 

參考文獻

1. 搜尋雙鏈路實時計算體系@雙11實戰:http://yq.aliyun.com/articles/2699

2. Google DownPour參考:http://research.google.com/archive/large_deep_networks_nips2012.html


相關文章