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