揭祕騰訊大數據之平臺綜述篇

摘要:騰訊業務產品線衆多,擁有海量的活躍用戶,每天線上產生的數據超乎想象。特別是隨着傳統業務增長放緩,以及移動互聯網時代的精細化運營,如何從大數據中獲取高價值,已經成爲大家關心的焦點問題。

4月12日,在騰訊分享日的大數據分論壇上騰訊首次對外展現了自己的大數據平臺,受到外界的普遍關注,後續我們將持續爲大家分享騰訊大數據的方方面面。本篇爲綜述篇,針對整體情況做概要性的介紹,後續將會有更詳細的離線計算、實時計算、數據實時採集以及大數據應用產品等系列文章輸出,絕對乾貨,敬請期待。

騰訊業務產品線衆多,擁有海量的活躍用戶,每天線上產生的數據超乎想象,必然會成爲數據大戶。特別是隨着傳統業務增長放緩,以及移動互聯網時代的精細化運營,對於大數據分析和挖掘的重視程度高於以往任何時候,如何從大數據中獲取高價值,已經成爲大家關心的焦點問題。在這樣的大背景下,爲了公司各業務產品能夠使用更豐富優質的數據服務,近年騰訊大數據平臺得到迅猛發展。

從上圖可以看出,騰訊大數據平臺有如下核心模塊:TDW、TRC、TDBank和Gaia。簡單來說,TDW用來做批量的離線計算,TRC負責做流式的實時計算,TDBank則作爲統一的數據採集入口,而底層的Gaia則負責整個集羣的資源調度和管理。接下來,本文會針對這四塊內容進行整體介紹。

TDW(Tencentdistributed Data Warehouse):騰訊分佈式數據倉庫。它支持百PB級數據的離線存儲和計算,爲業務提供海量、高效、穩定的大數據平臺支撐和決策支持。目前,TDW集羣總設備8400臺,單集羣最大規模5600臺 ,總存儲數據超過100PB,日均計算量超過5PB,日均Job數達到100萬個。

爲了降低用戶從傳統商業數據庫遷移門檻,TDW基於開源Hive進行了大量定製開發。在功能擴充方面,SQL語法兼容Oracle,實現了基於角色的權限管理、分區功能、窗口函數、多維分析功能、公用表表達式-CTE、DML-update/delete、入庫數據校驗等。在易用性方面,增加了基於python的過程語言接口,以及命令行工具PLClient,並提供可視化的IDE集成開發環境,使得開發效率大幅度提升。另外,在性能優化方面也做了大量工作,包括Hash Join、按行split、Order by limit優化、查詢計劃並行優化等,特別是針對Hive元數據的重構,去掉了低效的JDO層,並實現元數據集羣化,使系統擴展性提升明顯。

爲了儘可能促進數據共享和提升計算資源利用率,實施構建高效穩定的大集羣戰略,TDW針對Hadoop原有架構進行了深度改造。首先,通過JobTracker/NameNode分散化和容災,解決了Master單點問題,使得集羣的可擴展性和穩定性得到大幅度提升。其次,優化公平資源調度策略,以支撐上千併發job(現網3k+)同時運行,並且歸屬不同業務的任務之間不會互相影響。同時,根據數據使用頻率實施差異化壓縮策略,比如熱數據lzo、溫數據gz、冷數據gz+hdfsraid,總壓縮率相對文本可以達到10-20倍。

另外,爲了彌補Hadoop天然在update/delete操作上的不足,TDW引入postgresql作爲輔助,適用於較小數據集的高效分析。當前,TDW正在向着實時化發展,通過引入HBase提供了千億級實時查詢服務,並開始投入Spark研發爲大數據分析加速。

TDBank(TencentData Bank):數據實時收集與分發平臺。構建數據源和數據處理系統間的橋樑,將數據處理系統同數據源解耦,爲離線計算TDW和在線計算TRC平臺提供數據支持。

從架構上來看,TBank可以劃分爲前端採集、消息接入、消息存儲和消息分揀等模塊。前端模塊主要針對各種數據形式(普通文件,DB增量/全量,Socket消息,共享內存等)提供實時採集組件,提供了主動且實時的數據獲取方式。中間模塊則是具備日接入量萬億級的基於“發佈-訂閱”模型的分佈式消息中間件,它起到了很好的緩存和緩衝作用,避免了因後端系統繁忙或故障從而導致的處理阻塞或消息丟失。針對不同應用場景,TDBank提供數據的主動訂閱模式,以及不同的數據分發支持(分發到TDW數據倉庫,文件,DB,HBase,Socket等)。整個數據通路透明化,只需簡單配置,即可實現一點接入,整個大數據平臺可用。

另外,爲了減少大量數據進行跨城網絡傳輸,TDBank在數據傳輸的過程中進行數據壓縮,並提供公網/內網自動識別模式,極大的降低了專線帶寬成本。爲了保障數據的完整性,TDBank提供定製化的失敗重發和濾重機制,保障在複雜網絡情況下數據的高可用。TDBank基於流式的數據處理過程,保障了數據的實時性,爲TRC實時計算平臺提供實時的數據支持。目前,TDBank實時採集的數據超過150+TB/日(約5000+億條/日),這個數字一直在持續增長中,預計年底將超過2萬億條/日。

TRC(TencentReal-time Computing):騰訊實時計算平臺。作爲海量數據處理的另一利器,專門爲對時間延敏感的業務提供海量數據實時處理服務。通過海量數據的實時採集、實時計算,實時感知外界變化,從事件發生、到感知變化、到輸出計算結果,整個過程中秒級完成。

TRC是基於開源的Storm深度定製的流式處理引擎,用JAVA重寫了Storm的核心代碼。爲了解決了資源利用率和集羣規模的問題,重構了底層調度模塊,實現了任務級別的權限管理、資源分配、資源隔離,通過和Gaia這樣的資源管理框架相結合,做到了根據線上業務實際利用資源的狀況,動態擴容&縮容,單集羣輕鬆超過1000臺規模。爲了提高平臺的易用性和可運維性,提供了類SQL和Piglatin這樣的過程化語言擴展,方便用戶提交業務,提升接入效率,同時提供系統級的指標度量,支持用戶代碼對其擴展,實時監控整個系統運營環節。另外將TRC的功能服務化,通過REST API提供PAAS級別的開放,用戶無需瞭解底層實現細節就能方便的申請權限,資源和提交任務。

目前,TRC日計算次數超過2萬億次,在騰訊已經有很多業務正在使用TRC提供的實時數據處理服務。比如,對於廣點通廣告推薦而言,用戶在互聯網上的行爲能實時的影響其廣告推送內容,在用戶下一次刷新頁面時,就提供給用戶精準的廣告;對於在線視頻,新聞而言,用戶的每一次收藏、點擊、瀏覽行爲,都能被快速的歸入他的個人模型中,立刻修正視頻和新聞推薦。

Gaia:統一資源調度平臺。Gaia,希臘神話中的大地之神,是衆神之母,取名寓意各種業務類型和計算框架都能植根於“大地”之上。它能夠讓應用開發者像使用一臺超級計算機一樣使用整個集羣,極大地簡化了開發者的資源管理邏輯。Gaia提供高併發任務調度和資源管理,實現集羣資源共享,具有很高的可伸縮性和可靠性,它不僅支持MR等離線業務,還可以支持實時計算,甚至在線service業務。

爲了支撐單集羣8800臺甚至更大規模,Gaia基於開源社區Yarn之上自研Sfair (Scalable fair scheduler)調度器,優化調度邏輯,提供更好的可擴展性,並進一步增強調度的公平性,提升可定製化,將調度吞吐提升10倍以上。爲了滿足上層多樣化的計算框架穩定運行,Gaia除了Cpu、Mem的資源管理之外,新增了Network IO,Disk space,Disk IO等資源管理維度,提高了隔離性,爲業務提供了更好的資源保證和隔離。同時,Gaia開發了自己的內核版本,調整和優化Cpu、Mem資源管理策略,在兼容線程監控的前提下,利用cgroups,實現了hardlimit+softlimit結合的方式,充分利用整機資源,將containeroom kill機率大幅降低。另外,豐富的api也爲業務提供了更便捷的容災、擴容、縮容、升級等方式。

基於以上幾大基礎平臺的組合聯動,可以打造出了很多的數據產品及服務,如上面提到的精準推薦就是其中之一,另外還有諸如實時多維分析、秒級監控、騰訊分析、信鴿等等。除了一些相對成熟的平臺之外,我們還在進行不斷的嘗試,針對新的需求進行更合理的技術探索,如更快速的交互式分析、針對複雜關係鏈的圖式計算。此外,騰訊大數據平臺的各種能力及服務,還將通過TOD(Tencent Open Data)產品開放給外部第三方開發者。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章