揭秘騰訊大數據之平臺綜述篇--騰訊大數據
http://data.qq.com/article?id=1042
2014年4月12日,在騰訊分享日的大數據分論壇上,騰訊首次對外展現了自己的大數據平臺砸彬,受到外界的普遍關注,后續(xù),我們將持續(xù)為大家分享騰訊大數據的方方面面眨唬。本篇為綜述篇幻件,針對整體情況做概要性的介紹拨黔,后續(xù)將會有更詳細的離線計算、實時計算绰沥、數據實時采集以及大數據應用產品等系列文章輸出篱蝇,絕對干貨,敬請期待徽曲。
騰訊業(yè)務產品線眾多零截,擁有海量的活躍用戶,每天線上產生的數據超乎想象秃臣,必然會成為數據大戶涧衙。特別是隨著傳統業(yè)務增長放緩,以及移動互聯網時代的精細化運營奥此,對于大數據分析和挖掘的重視程度高于以往任何時候弧哎,如何從大數據中獲取高價值,已經成為大家關心的焦點問題稚虎。在這樣的大背景下撤嫩,為了公司各業(yè)務產品能夠使用更豐富優(yōu)質的數據服務,近年騰訊大數據平臺得到迅猛發(fā)展蠢终。
從上圖可以看出序攘,騰訊大數據平臺有如下核心模塊:TDW、TRC寻拂、TDBank和Gaia程奠。簡單來說,TDW用來做批量的離線計算兜喻,TRC負責做流式的實時計算梦染,TDBank則作為統一的數據采集入口,而底層的Gaia則負責整個集群的資源調度和管理朴皆。接下來悦屏,本文會針對這四塊內容進行整體介紹止后。
**TDW**(Tencent distributed Data Warehouse):騰訊分布式數據倉庫。它支持百PB級數據的離線存儲和計算,為業(yè)務提供海量猜惋、高效、穩(wěn)定的大數據平臺支撐和決策支持精钮。目前,TDW集群總設備8400臺们衙,單集群最大規(guī)模6000臺 ,總存儲數據超過100PB碱呼,日均計算量超過6.5PB蒙挑,日均Job數達到100萬個。
為了降低用戶從傳統商業(yè)數據庫遷移門檻愚臀,TDW基于開源Hive進行了大量定制開發(fā)忆蚀。在功能擴充方面,SQL語法兼容Oracle姑裂,實現了基于角色的權限管理馋袜、分區(qū)功能、窗口函數舶斧、多維分析功能欣鳖、公用表表達式-CTE、DML-update/delete茴厉、入庫數據校驗等泽台。在易用性方面,增加了基于python的過程語言接口呀忧,以及命令行工具PLClient师痕,并提供可視化的IDE集成開發(fā)環(huán)境,使得開發(fā)效率大幅度提升而账。另外胰坟,在性能優(yōu)化方面也做了大量工作,包括Hash Join泞辐、按行split笔横、Order by limit優(yōu)化、查詢計劃并行優(yōu)化等咐吼,特別是針對Hive元數據的重構吹缔,去掉了低效的JDO層,并實現元數據集群化锯茄,使系統擴展性提升明顯厢塘。
為了盡可能促進數據共享和提升計算資源利用率,實施構建高效穩(wěn)定的大集群戰(zhàn)略肌幽,TDW針對Hadoop原有架構進行了深度改造晚碾。首先,通過JobTracker/NameNode分散化和容災喂急,解決了Master單點問題格嘁,使得集群的可擴展性和穩(wěn)定性得到大幅度提升。其次廊移,優(yōu)化公平資源調度策略糕簿,以支撐上千并發(fā)job(現網3k+)同時運行探入,并且歸屬不同業(yè)務的任務之間不會互相影響。同時懂诗,根據數據使用頻率實施差異化壓縮策略蜂嗽,比如熱數據lzo、溫數據gz响禽、冷數據gz+hdfs raid徒爹,總壓縮率相對文本可以達到10-20倍。
另外芋类,為了彌補Hadoop天然在update/delete操作上的不足,TDW引入postgresql作為輔助界阁,適用于較小數據集的高效分析侯繁。當前,TDW正在向著實時化發(fā)展泡躯,通過引入HBase提供了千億級實時查詢服務贮竟,并開始投入Spark研發(fā)為大數據分析加速。
**TDBank**(Tencent Data Bank):數據實時收集與分發(fā)平臺较剃。構建數據源和數據處理系統間的橋梁咕别,將數據處理系統同數據源解耦,為離線計算TDW和在線計算TRC平臺提供數據支持写穴。
從架構上來看惰拱,TBank可以劃分為前端采集、消息接入啊送、消息存儲和消息分揀等模塊偿短。前端模塊主要針對各種數據形式(普通文件,DB增量/全量馋没,Socket消息昔逗,共享內存等)提供實時采集組件,提供了主動且實時的數據獲取方式篷朵。中間模塊則是具備日接入量萬億級的基于“發(fā)布-訂閱”模型的分布式消息中間件勾怒,它起到了很好的緩存和緩沖作用,避免了因后端系統繁忙或故障從而導致的處理阻塞或消息丟失声旺。針對不同應用場景笔链,TDBank提供數據的主動訂閱模式,以及不同的數據分發(fā)支持(分發(fā)到TDW數據倉庫艾少,文件卡乾,DB,HBase缚够,Socket等)幔妨。整個數據通路透明化鹦赎,只需簡單配置,即可實現一點接入误堡,整個大數據平臺可用古话。
另外,為了減少大量數據進行跨城網絡傳輸锁施,TDBank在數據傳輸的過程中進行數據壓縮陪踩,并提供公網/內網自動識別模式,極大的降低了專線帶寬成本悉抵。為了保障數據的完整性肩狂,TDBank提供定制化的失敗重發(fā)和濾重機制,保障在復雜網絡情況下數據的高可用姥饰。TDBank基于流式的數據處理過程傻谁,保障了數據的實時性,為TRC實時計算平臺提供實時的數據支持列粪。目前审磁,TDBank實時采集的數據超過150+TB/日(約5000+億條/日),這個數字一直在持續(xù)增長中岂座,預計年底將超過2萬億條/日态蒂。
** TRC**(Tencent Real-time Computing):騰訊實時計算平臺。作為海量數據處理的另一利器费什,專門為對時間延敏感的業(yè)務提供海量數據實時處理服務钾恢。通過海量數據的實時采集、實時計算吕喘,實時感知外界變化赘那,從事件發(fā)生、到感知變化氯质、到輸出計算結果募舟,整個過程中秒級完成。
TRC是基于開源的Storm深度定制的流式處理引擎闻察,用JAVA重寫了Storm的核心代碼拱礁。為了解決了資源利用率和集群規(guī)模的問題,重構了底層調度模塊辕漂,實現了任務級別的權限管理呢灶、資源分配、資源隔離钉嘹,通過和Gaia這樣的資源管理框架相結合鸯乃,做到了根據線上業(yè)務實際利用資源的狀況,動態(tài)擴容&縮容跋涣,單集群輕松超過1000臺規(guī)模缨睡。為了提高平臺的易用性和可運維性鸟悴,提供了類SQL和Piglatin這樣的過程化語言擴展,方便用戶提交業(yè)務奖年,提升接入效率细诸,同時提供系統級的指標度量,支持用戶代碼對其擴展陋守,實時監(jiān)控整個系統運營環(huán)節(jié)震贵。另外將TRC的功能服務化,通過REST API提供PAAS級別的開放水评,用戶無需了解底層實現細節(jié)就能方便的申請權限猩系,資源和提交任務。
目前之碗,TRC日計算次數超過2萬億次蝙眶,在騰訊已經有很多業(yè)務正在使用TRC提供的實時數據處理服務。比如褪那,對于廣點通廣告推薦而言,用戶在互聯網上的行為能實時的影響其廣告推送內容式塌,在用戶下一次刷新頁面時博敬,就提供給用戶精準的廣告;對于在線視頻峰尝,新聞而言偏窝,用戶的每一次收藏、點擊武学、瀏覽行為祭往,都能被快速的歸入他的個人模型中,立刻修正視頻和新聞推薦火窒。
**Gaia**:統一資源調度平臺硼补。Gaia,希臘神話中的大地之神熏矿,是眾神之母已骇,取名寓意各種業(yè)務類型和計算框架都能植根于“大地”之上。它能夠讓應用開發(fā)者像使用一臺超級計算機一樣使用整個集群票编,極大地簡化了開發(fā)者的資源管理邏輯褪储。Gaia提供高并發(fā)任務調度和資源管理,實現集群資源共享慧域,具有很高的可伸縮性和可靠性鲤竹,它不僅支持MR等離線業(yè)務,還可以支持實時計算昔榴,甚至在線service業(yè)務辛藻。
為了支撐單集群8800臺甚至更大規(guī)模碘橘,Gaia基于開源社區(qū)Yarn之上自研Sfair (Scalable fair scheduler)調度器,優(yōu)化調度邏輯揩尸,提供更好的可擴展性蛹屿,并進一步增強調度的公平性,提升可定制化岩榆,將調度吞吐提升10倍以上错负。為了滿足上層多樣化的計算框架穩(wěn)定運行,Gaia除了Cpu勇边、Mem的資源管理之外犹撒,新增了Network IO,Disk space粒褒,Disk IO等資源管理維度识颊,提高了隔離性,為業(yè)務提供了更好的資源保證和隔離奕坟。同時祥款,Gaia開發(fā)了自己的內核版本,調整和優(yōu)化Cpu月杉、Mem資源管理策略刃跛,在兼容線程監(jiān)控的前提下,利用cgroups苛萎,實現了hardlimit+softlimit結合的方式桨昙,充分利用整機資源,將container oom kill機率大幅降低腌歉。另外蛙酪,豐富的api也為業(yè)務提供了更便捷的容災、擴容翘盖、縮容桂塞、升級等方式。
基于以上幾大基礎平臺的組合聯動最仑,可以打造出了很多的數據產品及服務藐俺,如上面提到的精準推薦就是其中之一,另外還有諸如實時多維分析泥彤、秒級監(jiān)控欲芹、騰訊分析、信鴿等等吟吝。除了一些相對成熟的平臺之外菱父,我們還在進行不斷的嘗試,針對新的需求進行更合理的技術探索,如更快速的交互式分析浙宜、針對復雜關系鏈的圖式計算官辽。此外,騰訊大數據平臺的各種能力及服務粟瞬,還將通過TOD(Tencent Open Data)產品開放給外部第三方開發(fā)者同仆。如有想進一步了解我們的動態(tài)和詳細信息者可以關注我們后面的文章。