騰訊業(yè)務(wù)產(chǎn)品線眾多,擁有海量的活躍用戶,每天線上產(chǎn)生的數(shù)據(jù)超乎想象,必然會(huì)成為數(shù)據(jù)大戶。特別是隨著傳統(tǒng)業(yè)務(wù)增長(zhǎng)放緩,以及移動(dòng)互聯(lián)網(wǎng)時(shí)代的精細(xì)化運(yùn)營(yíng),對(duì)于大數(shù)據(jù)分析和挖掘的重視程度高于以往任何時(shí)候,如何從大數(shù)據(jù)中獲取高價(jià)值,已經(jīng)成為大家關(guān)心的焦點(diǎn)問題。在這樣的大背景下,為了公司各業(yè)務(wù)產(chǎn)品能夠使用更豐富優(yōu)質(zhì)的數(shù)據(jù)服務(wù),近年騰訊大數(shù)據(jù)平臺(tái)得到迅猛發(fā)展。
圖 1 大數(shù)據(jù)平臺(tái)核心模塊
從上圖可以看出,騰訊大數(shù)據(jù)平臺(tái)有如下核心模塊:TDW、TRC、TDBank和Gaia。簡(jiǎn)單來說,TDW用來做批量的離線計(jì)算,TRC負(fù)責(zé)做流式的實(shí)時(shí)計(jì)算,TDBank則作為統(tǒng)一的數(shù)據(jù)采集入口,而底層的Gaia則負(fù)責(zé)整個(gè)集群的資源調(diào)度和管理。接下來,本文會(huì)針對(duì)這四塊內(nèi)容進(jìn)行整體介紹。
TDW(Tencent distributed Data Warehouse):騰訊分布式數(shù)據(jù)倉(cāng)庫。它支持百PB級(jí)數(shù)據(jù)的離線存儲(chǔ)和計(jì)算,為業(yè)務(wù)提供海量、高效、穩(wěn)定的大數(shù)據(jù)平臺(tái)支撐和決策支持。目前,TDW集群總設(shè)備8400臺(tái),單集群最大規(guī)模5600臺(tái) ,總存儲(chǔ)數(shù)據(jù)超過100PB,日均計(jì)算量超過5PB,日均Job數(shù)達(dá)到100萬個(gè)。
圖 2 分布式數(shù)據(jù)倉(cāng)庫
為了降低用戶從傳統(tǒng)商業(yè)數(shù)據(jù)庫遷移門檻,TDW基于開源Hive進(jìn)行了大量定制開發(fā)。在功能擴(kuò)充方面,SQL語法兼容Oracle,實(shí)現(xiàn)了基于角色的權(quán)限管理、分區(qū)功能、窗口函數(shù)、多維分析功能、公用表表達(dá)式-CTE、DML-update/delete、入庫數(shù)據(jù)校驗(yàn)等。在易用性方面,增加了基于Python的過程語言接口,以及命令行工具PLClient,并提供可視化的IDE集成開發(fā)環(huán)境,使得開發(fā)效率大幅度提升。另外,在性能優(yōu)化方面也做了大量工作,包括Hash Join、按行split、Order by limit優(yōu)化、查詢計(jì)劃并行優(yōu)化等,特別是針對(duì)Hive元數(shù)據(jù)的重構(gòu),去掉了低效的JDO層,并實(shí)現(xiàn)元數(shù)據(jù)集群化,使系統(tǒng)擴(kuò)展性提升明顯。
為了盡可能促進(jìn)數(shù)據(jù)共享和提升計(jì)算資源利用率,實(shí)施構(gòu)建高效穩(wěn)定的大集群戰(zhàn)略,TDW針對(duì)Hadoop原有架構(gòu)進(jìn)行了深度改造。首先,通過JobTracker/NameNode分散化和容災(zāi),解決了Master單點(diǎn)問題,使得集群的可擴(kuò)展性和穩(wěn)定性得到大幅度提升。其次,優(yōu)化公平資源調(diào)度策略,以支撐上千并發(fā)job(現(xiàn)網(wǎng)3k+)同時(shí)運(yùn)行,并且歸屬不同業(yè)務(wù)的任務(wù)之間不會(huì)互相影響。同時(shí),根據(jù)數(shù)據(jù)使用頻率實(shí)施差異化壓縮策略,比如熱數(shù)據(jù)lzo、溫?cái)?shù)據(jù)gz、冷數(shù)據(jù)gz+hdfs raid,總壓縮率相對(duì)文本可以達(dá)到10-20倍。
另外,為了彌補(bǔ)Hadoop天然在update/delete操作上的不足,TDW引入PostgreSQL作為輔助,適用于較小數(shù)據(jù)集的高效分析。當(dāng)前,TDW正在向著實(shí)時(shí)化發(fā)展,通過引入HBase提供了千億級(jí)實(shí)時(shí)查詢服務(wù),并開始投入Spark研發(fā)為大數(shù)據(jù)分析加速。
TDBank(Tencent Data Bank):數(shù)據(jù)實(shí)時(shí)收集與分發(fā)平臺(tái)。構(gòu)建數(shù)據(jù)源和數(shù)據(jù)處理系統(tǒng)間的橋梁,將數(shù)據(jù)處理系統(tǒng)同數(shù)據(jù)源解耦,為離線計(jì)算TDW和在線計(jì)算TRC平臺(tái)提供數(shù)據(jù)支持。
圖 3 數(shù)據(jù)實(shí)時(shí)收集與分發(fā)平臺(tái)
從架構(gòu)上來看,TBank可以劃分為前端采集、消息接入、消息存儲(chǔ)和消息分揀等模塊。前端模塊主要針對(duì)各種數(shù)據(jù)形式(普通文件,DB增量/全量,Socket消息,共享內(nèi)存等)提供實(shí)時(shí)采集組件,提供了主動(dòng)且實(shí)時(shí)的數(shù)據(jù)獲取方式。中間模塊則是具備日接入量萬億級(jí)的基于“發(fā)布-訂閱”模型的分布式消息中間件,它起到了很好的緩存和緩沖作用,避免了因后端系統(tǒng)繁忙或故障從而導(dǎo)致的處理阻塞或消息丟失。針對(duì)不同應(yīng)用場(chǎng)景,TDBank提供數(shù)據(jù)的主動(dòng)訂閱模式,以及不同的數(shù)據(jù)分發(fā)支持(分發(fā)到TDW數(shù)據(jù)倉(cāng)庫,文件,DB,HBase,Socket等)。整個(gè)數(shù)據(jù)通路透明化,只需簡(jiǎn)單配置,即可實(shí)現(xiàn)一點(diǎn)接入,整個(gè)大數(shù)據(jù)平臺(tái)可用。
另外,為了減少大量數(shù)據(jù)進(jìn)行跨城網(wǎng)絡(luò)傳輸,TDBank在數(shù)據(jù)傳輸?shù)倪^程中進(jìn)行數(shù)據(jù)壓縮,并提供公網(wǎng)/內(nèi)網(wǎng)自動(dòng)識(shí)別模式,極大的降低了專線帶寬成本。為了保障數(shù)據(jù)的完整性,TDBank提供定制化的失敗重發(fā)和濾重機(jī)制,保障在復(fù)雜網(wǎng)絡(luò)情況下數(shù)據(jù)的高可用。TDBank基于流式的數(shù)據(jù)處理過程,保障了數(shù)據(jù)的實(shí)時(shí)性,為TRC實(shí)時(shí)計(jì)算平臺(tái)提供實(shí)時(shí)的數(shù)據(jù)支持。目前,TDBank實(shí)時(shí)采集的數(shù)據(jù)超過150+TB/日(約5000+億條/日),這個(gè)數(shù)字一直在持續(xù)增長(zhǎng)中,預(yù)計(jì)年底將超過2萬億條/日。
TRC(Tencent Real-time Computing):騰訊實(shí)時(shí)計(jì)算平臺(tái)。作為海量數(shù)據(jù)處理的另一利器,專門為對(duì)時(shí)間延敏感的業(yè)務(wù)提供海量數(shù)據(jù)實(shí)時(shí)處理服務(wù)。通過海量數(shù)據(jù)的實(shí)時(shí)采集、實(shí)時(shí)計(jì)算,實(shí)時(shí)感知外界變化,從事件發(fā)生、到感知變化、到輸出計(jì)算結(jié)果,整個(gè)過程中秒級(jí)完成。
圖 4 實(shí)時(shí)計(jì)算平臺(tái)
TRC是基于開源的Storm深度定制的流式處理引擎,用Java重寫了Storm的核心代碼。為了解決了資源利用率和集群規(guī)模的問題,重構(gòu)了底層調(diào)度模塊,實(shí)現(xiàn)了任務(wù)級(jí)別的權(quán)限管理、資源分配、資源隔離,通過和Gaia這樣的資源管理框架相結(jié)合,做到了根據(jù)線上業(yè)務(wù)實(shí)際利用資源的狀況,動(dòng)態(tài)擴(kuò)容&縮容,單集群輕松超過1000臺(tái)規(guī)模。為了提高平臺(tái)的易用性和可運(yùn)維性,提供了類SQL和Pig Latin這樣的過程化語言擴(kuò)展,方便用戶提交業(yè)務(wù),提升接入效率,同時(shí)提供系統(tǒng)級(jí)的指標(biāo)度量,支持用戶代碼對(duì)其擴(kuò)展,實(shí)時(shí)監(jiān)控整個(gè)系統(tǒng)運(yùn)營(yíng)環(huán)節(jié)。另外將TRC的功能服務(wù)化,通過REST API提供PaaS級(jí)別的開放,用戶無需了解底層實(shí)現(xiàn)細(xì)節(jié)就能方便的申請(qǐng)權(quán)限,資源和提交任務(wù)。
目前,TRC日計(jì)算次數(shù)超過2萬億次,在騰訊已經(jīng)有很多業(yè)務(wù)正在使用TRC提供的實(shí)時(shí)數(shù)據(jù)處理服務(wù)。比如,對(duì)于廣點(diǎn)通廣告推薦而言,用戶在互聯(lián)網(wǎng)上的行為能實(shí)時(shí)的影響其廣告推送內(nèi)容,在用戶下一次刷新頁面時(shí),就提供給用戶精準(zhǔn)的廣告;對(duì)于在線視頻,新聞而言,用戶的每一次收藏、點(diǎn)擊、瀏覽行為,都能被快速的歸入他的個(gè)人模型中,立刻修正視頻和新聞推薦。
Gaia:統(tǒng)一資源調(diào)度平臺(tái)。Gaia,希臘神話中的大地之神,是眾神之母,取名寓意各種業(yè)務(wù)類型和計(jì)算框架都能植根于“大地”之上。它能夠讓應(yīng)用開發(fā)者像使用一臺(tái)超級(jí)計(jì)算機(jī)一樣使用整個(gè)集群,極大地簡(jiǎn)化了開發(fā)者的資源管理邏輯。Gaia提供高并發(fā)任務(wù)調(diào)度和資源管理,實(shí)現(xiàn)集群資源共享,具有很高的可伸縮性和可靠性,它不僅支持MR等離線業(yè)務(wù),還可以支持實(shí)時(shí)計(jì)算,甚至在線service業(yè)務(wù)。
為了支撐單集群8800臺(tái)甚至更大規(guī)模,Gaia基于開源社區(qū)Yarn之上自研Sfair (Scalable fair scheduler)調(diào)度器,優(yōu)化調(diào)度邏輯,提供更好的可擴(kuò)展性,并進(jìn)一步增強(qiáng)調(diào)度的公平性,提升可定制化,將調(diào)度吞吐提升10倍以上。為了滿足上層多樣化的計(jì)算框架穩(wěn)定運(yùn)行,Gaia除了CPU、Mem的資源管理之外,新增了Network IO,Disk space,Disk IO等資源管理維度,提高了隔離性,為業(yè)務(wù)提供了更好的資源保證和隔離。同時(shí),Gaia開發(fā)了自己的內(nèi)核版本,調(diào)整和優(yōu)化CPU、Mem資源管理策略,在兼容線程監(jiān)控的前提下,利用cgroups,實(shí)現(xiàn)了hardlimit+softlimit結(jié)合的方式,充分利用整機(jī)資源,將container oom kill機(jī)率大幅降低。另外,豐富的API也為業(yè)務(wù)提供了更便捷的容災(zāi)、擴(kuò)容、縮容、升級(jí)等方式。
基于以上幾大基礎(chǔ)平臺(tái)的組合聯(lián)動(dòng),可以打造出了很多的數(shù)據(jù)產(chǎn)品及服務(wù),如上面提到的精準(zhǔn)推薦就是其中之一,另外還有諸如實(shí)時(shí)多維分析、秒級(jí)監(jiān)控、騰訊分析、信鴿等等。除了一些相對(duì)成熟的平臺(tái)之外,我們還在進(jìn)行不斷的嘗試,針對(duì)新的需求進(jìn)行更合理的技術(shù)探索,如更快速的交互式分析、針對(duì)復(fù)雜關(guān)系鏈的圖式計(jì)算。此外,騰訊大數(shù)據(jù)平臺(tái)的各種能力及服務(wù),還將通過TOD(Tencent Open Data)產(chǎn)品開放給外部第三方開發(fā)者。
核心關(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ù)據(jù)平臺(tái)探究
本文網(wǎng)址:http://www.ezxoed.cn/html/consultation/10839316116.html