天天看點

實時離線平台Pora介紹@2015

      pora是personal offline realtime analyze的簡稱。

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

      整個搜尋pipeline上看,pora位于引擎的離線部分。設計pora的一個目标是實時處理流資料。是以pora必須同時具備海量資料處理(高吞吐)和實時(低延遲)。除此之外,pora還需要成為一個平台。衆多算法子產品可以運作、靈活調整和實時生效。

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

實時離線平台Pora介紹@2015

圖1.搜尋實時計算體系

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

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

實時離線平台Pora介紹@2015

圖2.pora總體架構

2015年pora的重要改動

       原有pora的核心層獨立出來,稱為tec項目。pora定位業務邏輯和算法接口,開發更簡潔。tec是輕量級實時計算架構,支援快速開發高吞吐、低延遲的實時應用。例如aliexpress(ae)搜尋的離線資料庫dump業務,基于tec實作了小時批量到秒級實時的跨越。

實時離線平台Pora介紹@2015

圖3. pora的技術堆棧

      資料和模型是算法的兩大核心,14年基于pora,實作了資料的實時更新。15年在pora上開發了基于parameter server架構的線上學習架構,實作了模型的實時更新。

      圖3是pora内部的線上學習架構,工作機理參考google的downpour sgd。特點是異步,并行,平台化。parameter server由feature worker和hbase model storage實作。

      線上學習的算法,詳見文章《搜尋雙鍊路實時計算體系@雙11實戰》[5]

實時離線平台Pora介紹@2015

圖3. 線上學習架構

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

      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

上一篇: java踩坑
下一篇: [C語言] sizeof

繼續閱讀