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

圖 1 大數據平臺核心模塊
從上圖可以看出,騰訊大數據平臺有如下核心模塊:TDW、TRC、TDBank和Gaia。簡單來說,TDW用來做批量的離線計算,TRC負責做流式的實時計算,TDBank則作為統一的數據采集入口,而底層的Gaia則負責整個集群的資源調度和管理。接下來,本文會針對這四塊內容進行整體介紹。
TDW(Tencent distributed Data Warehouse):騰訊分布式數據倉庫。它支持百PB級數據的離線存儲和計算,為業務提供海量、高效、穩定的大數據平臺支撐和決策支持。目前,TDW集群總設備8400臺,單集群最大規模5600臺 ,總存儲數據超過100PB,日均計算量超過5PB,日均Job數達到100萬個。

圖 2 分布式數據倉庫
為了降低用戶從傳統商業數據庫遷移門檻,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+hdfs raid,總壓縮率相對文本可以達到10-20倍。
另外,為了彌補Hadoop天然在update/delete操作上的不足,TDW引入PostgreSQL作為輔助,適用于較小數據集的高效分析。當前,TDW正在向著實時化發展,通過引入HBase提供了千億級實時查詢服務,并開始投入Spark研發為大數據分析加速。
TDBank(Tencent Data Bank):數據實時收集與分發平臺。構建數據源和數據處理系統間的橋梁,將數據處理系統同數據源解耦,為離線計算TDW和在線計算TRC平臺提供數據支持。

圖 3 數據實時收集與分發平臺
從架構上來看,TBank可以劃分為前端采集、消息接入、消息存儲和消息分揀等模塊。前端模塊主要針對各種數據形式(普通文件,DB增量/全量,Socket消息,共享內存等)提供實時采集組件,提供了主動且實時的數據獲取方式。中間模塊則是具備日接入量萬億級的基于“發布-訂閱”模型的分布式消息中間件,它起到了很好的緩存和緩沖作用,避免了因后端系統繁忙或故障從而導致的處理阻塞或消息丟失。針對不同應用場景,TDBank提供數據的主動訂閱模式,以及不同的數據分發支持(分發到TDW數據倉庫,文件,DB,HBase,Socket等)。整個數據通路透明化,只需簡單配置,即可實現一點接入,整個大數據平臺可用。
另外,為了減少大量數據進行跨城網絡傳輸,TDBank在數據傳輸的過程中進行數據壓縮,并提供公網/內網自動識別模式,極大的降低了專線帶寬成本。為了保障數據的完整性,TDBank提供定制化的失敗重發和濾重機制,保障在復雜網絡情況下數據的高可用。TDBank基于流式的數據處理過程,保障了數據的實時性,為TRC實時計算平臺提供實時的數據支持。目前,TDBank實時采集的數據超過150+TB/日(約5000+億條/日),這個數字一直在持續增長中,預計年底將超過2萬億條/日。
TRC(Tencent Real-time Computing):騰訊實時計算平臺。作為海量數據處理的另一利器,專門為對時間延敏感的業務提供海量數據實時處理服務。通過海量數據的實時采集、實時計算,實時感知外界變化,從事件發生、到感知變化、到輸出計算結果,整個過程中秒級完成。

圖 4 實時計算平臺
TRC是基于開源的Storm深度定制的流式處理引擎,用Java重寫了Storm的核心代碼。為了解決了資源利用率和集群規模的問題,重構了底層調度模塊,實現了任務級別的權限管理、資源分配、資源隔離,通過和Gaia這樣的資源管理框架相結合,做到了根據線上業務實際利用資源的狀況,動態擴容&縮容,單集群輕松超過1000臺規模。為了提高平臺的易用性和可運維性,提供了類SQL和Pig Latin這樣的過程化語言擴展,方便用戶提交業務,提升接入效率,同時提供系統級的指標度量,支持用戶代碼對其擴展,實時監控整個系統運營環節。另外將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結合的方式,充分利用整機資源,將container oom kill機率大幅降低。另外,豐富的API也為業務提供了更便捷的容災、擴容、縮容、升級等方式。
基于以上幾大基礎平臺的組合聯動,可以打造出了很多的數據產品及服務,如上面提到的精準推薦就是其中之一,另外還有諸如實時多維分析、秒級監控、騰訊分析、信鴿等等。除了一些相對成熟的平臺之外,我們還在進行不斷的嘗試,針對新的需求進行更合理的技術探索,如更快速的交互式分析、針對復雜關系鏈的圖式計算。此外,騰訊大數據平臺的各種能力及服務,還將通過TOD(Tencent Open Data)產品開放給外部第三方開發者。
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://www.guhuozai8.cn/
本文標題:騰訊大數據平臺探究
本文網址:http://www.guhuozai8.cn/html/consultation/10839316116.html