“大數據”在互聯網行業中已是普遍現象,一家公司每天累積的用戶行為數據甚至已不能用TB來衡量。海量數據對實時分析和計算提出了更高的要求,實時處理程序必須確保在嚴格的時間內響應,通常以秒為單位,甚至是毫秒。傳統的批量計算模型已無法滿足這些要求,必須用專門的實時計算系統替代。當前,業界知名的實時計算系統有Google的MillWheel、Twitter開源的Storm、Spark Streaming等。
百度自主研發了國內規模最大的實時計算平臺——Dstream和TM。它們各有千秋,適用于不同的業務場景。Dstream旨在面向有向無環的數據處理流,滿足高時效性要求的計算業務場景(如實時CTR計算),可達到毫秒級的響應。TM則是queue-worker模式的準實時workflow計算系統,可滿足秒級到分鐘級響應,并具備transaction語義,流入平臺的數據即使在平臺發生故障的情況下,也能做到不重不丟。這一系統主要應用于低時延、高吞吐及對數據完整性要求極高的場景,如報表生成系統、計費流計算等。
百度實時計算平臺介紹
Dstream立項之初,業界還沒有類似的開源系統(Storm尚未正式推出),只能依靠研發團隊自己摸索。目前Dstream平臺的集群規模已超千臺,單集群最大處理數據量超過50TB/天,集群峰值QPS 193W/S,系統穩定性、計算能力已完全滿足海量數據時效性處理需求。即使與Storm相比,Dstream在系統成熟度、性能、穩定性等方面仍然優勢明顯,具體對比數據如表1所示。
表 1 Dstream與Storm對比
TM平臺從2013年開始研發,目前集群規模為百臺級,單集群最大處理數據量超過30TB/天,最大QPS 20W/S。基于TM平臺實現的多路數據流式join解決方案,已具備超大時間窗流式join計算能力,時間窗可到“天”級別,保證數據不丟不重,達到了業界先進水平,并已應用于百度多條業務線的點擊日志、展現日志的join計算。
在TM平臺上,用戶構造一個作業描述文件來闡述各種worker之間的數據流向關系和每個worker所需的資源,通過client將作業提交給TM平臺,然后由TM調度并運行。TM平臺可利用公司空閑服務器資源進行計算。系統具有以下幾個特性。
保證數據完整和時效。數據在處理過程中,保證不會出現重復和丟失,在保證join比例的情況下,最短時間內輸出給下游使用。
容忍數據流的長時間跨度。不限制輸入數據流的時間延遲和跨度,通過引入可靠存儲系統來“存儲一種數據流,其余數據流查詢”的方式,解決長時間跨度下數據join問題;對于時間跨度小的數據流,提供基于滑動窗口的內存join方式。
通用性。可以同時應對不同時間跨度的join,一般應用既需要時效性較高,又要求數據join比例不同,時效性也有所不同。通過引入多級重試join機制,系統同時滿足了這兩個需求。
高可靠性和高可運維。通過支持多集群備份、多機房備份等方案,保證系統的高可靠性。另外通過TM平臺管理應用拓撲、集群配置,支持配置動態更新、故障自動檢測等,增強系統的高可運維性。
實時計算平臺應用案例
日志實時ETL
百度內部有統一的用戶數據倉庫,數據入庫的方式有兩種:一是通過基于Hadoop的ETL平臺批量定期入庫,二是直接通過實時計算系統實時入庫。其中實時入庫系統名為UDW–RT,它基于底層實時計算平臺二次開發,致力于為百度提供一個面向流的、實時的數據ETL平臺;通過設計和實現一個類SQL、可擴展的流運算系統,UDW–RT系統能為實時數據處理提供基礎設施和數據供給。
UDW-RT系統邏輯上可分為以下三層(如圖1)。
圖 1 UDW-RT系統架構圖
第一層為RT-importer,其職責是清洗、歸并、結構化從pipe系統導入的數據并映射成流,每個流可以被想象成是一個無限長的數據表。
第二層是RT-PE,負責執行流算子。通過應用流類SQL算子(目前只支持部分SQL操作,如union、filtering和projection等),可以生成一個或多個邏輯流;每個邏輯流都可被下游零個或多個數據使用方訂閱。
第三層是RT系統的應用程序,被稱為RT-EXPORTER;數據使用方通過掛載RT-EXPORTER來進行數據消費。
實時競價RTB
TM平臺對RTB實時競價產生的兩路日志進行join計算,以確定競價成功的廣告,計算后的輸出數據成為百度反作弊、CTR計算、計費等多個后端系統的入口。TM流式join架構支撐了RTB競價模式落地,滿足了廣告主對于內容投放提出的更精準、實時和程序化的要求。同時,通過TM平臺,百度網盟業務實現了前后端架構解耦,提升了系統健壯性和可擴展性,它由以下幾個主要部分組成(如圖2所示)。
圖 2 TM平臺支持實時競價架構
Bigpipe:百度內部分布式消息發送訂閱系統,延遲低,并且能保證數據在傳輸過程中不重不丟。
Bundler:TM平臺訂閱Bigpipe數據的通用模塊,A_bundler和B_bundler表示訂閱不同的數據流。
Parser:數據解析模塊,主要將目前數據格式從文本轉化成PB。
Aggregator:文件聚合模塊,主要是將Parser產生的小文件聚合成大文件,減少文件個數。
Joiner:核心模塊,負責兩種數據流的join。采用基于滑動窗口的方式,保證數據流的流動和延遲,同時數據在窗口內部有序,使得單個joiner在輸出數據時有序。另外通過aggregator流控策略,可以保證各個joiner輸出數據時間戳相差不大,從而保證整體數據輸出亂序有限。
Appender:TM平臺向Bigpipe發布數據的模塊。這里分了三路,分別表示A、B兩種數據流沒有join上的結果,以及join上的結果。
總結
基于實時計算平臺,百度已具備多種高時效性的數據處理解決方案,這些技術已在越來越多的應用場景中發揮出重要作用。未來,百度將繼續投入,深化對大數據實時計算架構及其關鍵技術的研究,進一步推動大數據實時計算理論、方法、技術與系統的應用與發展,以滿足更廣泛的市場需求和應用前景。
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://www.lukmueng.com/
本文標題:百度實時計算平臺的實現和應用