騰訊大數(shù)據(jù)總體架構(gòu)圖,首次對外公開!
騰訊作為國內(nèi)體量最大的互聯(lián)網(wǎng)公司之一,業(yè)務(wù)涵蓋用戶日常生活的方方面面,面對如此巨大業(yè)務(wù)數(shù)據(jù)量,如果不能對數(shù)據(jù)進行專業(yè)化處理并高效有序地存、管、用,如果不能使數(shù)據(jù)產(chǎn)生應(yīng)有的價值,那么數(shù)據(jù)資產(chǎn)將會成為數(shù)據(jù)垃圾,成為社會和企業(yè)的負擔(dān)。
大數(shù)據(jù)平臺作為騰訊底層的基礎(chǔ)設(shè)施之一,每天必須處理千萬級規(guī)模的離線數(shù)據(jù)任務(wù)及十萬億級別的實時計算,否則無法滿足業(yè)務(wù)每天數(shù)以億計的數(shù)據(jù)分析計算的需求。
01騰訊大數(shù)據(jù)的構(gòu)建理念
項目立項的時候我們曾有過激烈討論,是自主研發(fā)還是使用開源,“To be, or not to be: that is the question”。當(dāng)時業(yè)務(wù)需求比較迫切,2009年上半年,QQ空間引入了“開心農(nóng)場”業(yè)務(wù),開啟了瘋狂增長的模式,業(yè)務(wù)部門的同事看著幾乎是垂直的增長曲線笑逐顏開,我們看著曲線卻笑不出來。如何能快速構(gòu)建全新的數(shù)據(jù)倉庫,滿足業(yè)務(wù)快速增長的計算需求,我們在努力尋找答案。
在2008~2009年,開源在國內(nèi)還沒大行其道,很多程序員都有一種偏見,覺得使用開源都是沒什么技術(shù)含量的。幾乎所有的程序員心里都有一個夢想和追求,希望能自己實現(xiàn)一套頂尖的系統(tǒng),從而在中國乃至世界的軟件行業(yè)揚名立萬。但是盤點了業(yè)務(wù)的需求以及對比了那時候團隊能力和所能調(diào)配的人力之后,我們發(fā)現(xiàn)實現(xiàn)這么一套系統(tǒng),無異于登天。完全自主研發(fā)新一代的數(shù)據(jù)倉庫是難以攀爬的珠峰。
此路不通,只能改走開源路線。其實開源有很多好處,它有著豐富的社區(qū)資源和社區(qū)生態(tài),有著龐大的各路代碼貢獻者,使用開源的系統(tǒng),相當(dāng)于利用了全世界的資源,利用了全世界的程序員的智慧。使用開源項目,能快速搭建適應(yīng)業(yè)務(wù)需求的平臺。
但開源對于我們來說也并不容易。首先,技術(shù)棧不一樣,我們原來是C/C++技術(shù)棧,是做計費系統(tǒng)的,而大數(shù)據(jù)開源基本以Java為主,需要從頭去學(xué),幸好語言的差異并不是很難克服,我們邊學(xué)習(xí)邊招聘有大數(shù)據(jù)經(jīng)驗的開發(fā)者,慢慢地做了起來;另外,大數(shù)據(jù)生態(tài)是很龐大的,每一個項目都不足以達到企業(yè)級的需求,每一個項目都要進行大量的優(yōu)化,才能符合我們可用性方面的需求。
從最初的蹣跚學(xué)步到現(xiàn)在,騰訊大數(shù)據(jù)走過了十余年,歷經(jīng)三代技術(shù)演進。第一代是“拿來主義”,拿來就用,但部分系統(tǒng)比如HDFS(Hadoop Distributed File System, Hadoop分布式文件系統(tǒng))、Hive等因為性能、功能不能滿足需求,我們對核心模塊進行了定制化的優(yōu)化;第二代是有限自主研發(fā)的階段,我們對部分核心平臺進行參考性的自主研發(fā),重構(gòu)實時采集系統(tǒng),同時對底層實時計算引擎Storm使用Java進行重寫等;第三代是純自主研發(fā)的階段,第三代的核心平臺—高性能分布式機器學(xué)習(xí)平臺Angel,是騰訊和北大等高校聯(lián)合研發(fā),具有完全知識產(chǎn)權(quán)。
我們一直是開源的受益者,從Hadoop到Spark到Storm……我們的發(fā)展離不開社區(qū),我們?nèi)跣〉臅r候依賴開源社區(qū),我們成長后又積極回饋社區(qū)。其實早在2014年,我們就把騰訊自己的Hive版本進行開源,它對Oracle語法兼容等特性廣受歡迎。我們第三代最核心的高性能分布式機器學(xué)習(xí)平臺Angel在2017年就開源了,2018年還進一步捐獻給Linux基金會。2019年,我們一口氣開源了四大平臺:實時數(shù)據(jù)采集平臺TubeMQ(捐獻給Apache社區(qū))、資源管理平臺TKEStack、分布式數(shù)據(jù)庫TBase以及騰訊版本的OpenJDK—Kona JDK。我們有幾十個項目的PMC和提交者及更大量的貢獻者,每天都為社區(qū)貢獻代碼。
通過開源進行技術(shù)上的協(xié)同,可聚攏人才,一個好的項目能吸引很多優(yōu)秀的開發(fā)者,有利于形成一個優(yōu)良的技術(shù)生態(tài),有利于推動技術(shù)進步。這也是我們選擇開源的原因。
來自開源、回饋開源、堅持開源,這可以說是騰訊大數(shù)據(jù)平臺十年發(fā)展的技術(shù)理念。另外一個技術(shù)理念是:一切要為業(yè)務(wù)所用。
我們固執(zhí)地認為,技術(shù)如果不能為業(yè)務(wù)所用,那它就是毫無價值的。我們自主研發(fā)的Angel項目,出發(fā)點也是因為當(dāng)時開源社區(qū)里面沒有符合我們業(yè)務(wù)需求的機器學(xué)習(xí)平臺,自主研發(fā)是因為對業(yè)務(wù)有價值,而不是因為它在技術(shù)上很有挑戰(zhàn)性以及我們要證明自己技術(shù)很牛。Angel自2017年開源后有超過一百多個公司和組織使用,包括華為、小米、OPPO、新浪微博、拼多多等,發(fā)揮了Angel在騰訊以外的價值。
02騰訊大數(shù)據(jù)的總體架構(gòu)
如前所述,騰訊大數(shù)據(jù)十余年的發(fā)展,經(jīng)歷了三代的技術(shù)演變,如圖1所示。
▲圖1 騰訊大數(shù)據(jù)三代技術(shù)演變
第一代架構(gòu)從2009~2011年,以承載離線計算任務(wù)為主,如圖2所示。
TDW主要以Hadoop為基礎(chǔ)構(gòu)建,我們主要做了兩方面的優(yōu)化:其一擴大了集群規(guī)模,包括增強了集群拓展性,優(yōu)化了調(diào)度性能,增強了容災(zāi)能力,通過差異化存儲降低了存儲成本;其二是利用周邊生態(tài)降低應(yīng)用門檻,建設(shè)配套的調(diào)度與開發(fā)平臺,兼容Oracle的語法,以及集成PostgreSQL數(shù)據(jù)庫以提升小數(shù)據(jù)量的分析性能。第一代平臺總結(jié)起來就是,技術(shù)上主要滿足離線計算需求,技術(shù)挑戰(zhàn)主要在不斷擴展和優(yōu)化集群規(guī)模,單集群規(guī)模從幾十臺到幾百臺,再到幾千臺不斷突破。
▲圖2 第一代離線計算平臺架構(gòu)
第二代架構(gòu)從2012~2014年,在承載離線計算的基礎(chǔ)上,擴展了平臺能力,支持實時計算的需求,如圖3所示。
▲圖3 第二代實時計算平臺架構(gòu)
在第一代離線計算平臺基礎(chǔ)之上,我們?nèi)诤蟂torm和Spark構(gòu)建了第二代實時計算平臺。主要的演進如下。
1)集成Spark,離線計算比Hadoop性能更高。
2)引入Storm,支持秒級/毫秒級的流式計算任務(wù)。
3)建設(shè)了實時采集系統(tǒng)TDBank,數(shù)據(jù)采集實現(xiàn)從天級(T+1)到秒級的飛躍。
4)支持資源和任務(wù)調(diào)度方面,平臺支持離線與在線混合部署,任務(wù)容器化,資源管理的維度支持CPU、內(nèi)存,以及網(wǎng)絡(luò)與I/O,進一步提升了平臺輕量化、敏捷性與靈活性,極大提升了平臺利用率,降低了成本。
第三代架構(gòu)從2015~2019年,在通用大數(shù)據(jù)計算外,開始支持機器學(xué)習(xí)、深度學(xué)習(xí)等AI場景,Big Data與AI在平臺層面逐步融合,如圖4所示。
▲圖4 第三代機器學(xué)習(xí)計算平臺
在第二代實時計算平臺基礎(chǔ)上,自主研發(fā)了機器學(xué)習(xí)平臺Angel,并以Angel為核心構(gòu)建第三代機器學(xué)習(xí)計算平臺生態(tài)。主要演進如下。
1)我們與北京大學(xué)合作,自主研發(fā)了高性能分布式機器學(xué)習(xí)平臺。該平臺支持十億至百億維度模型,支持?jǐn)?shù)據(jù)并行及模型并行,支持在線訓(xùn)練。同時,它除了支持傳統(tǒng)的機器學(xué)習(xí)之外,還擴展支持深度學(xué)習(xí)、圖計算等功能,具有全棧的AI能力。它具有友好的編程接口、豐富的算法庫,并在上層構(gòu)建了一站式開發(fā)運營環(huán)境,支持業(yè)界多種流行計算框架。Angel于2017年6月全面開源,2018年捐獻給Linux基金會,2019年12月20日從Linux基金會旗下AI領(lǐng)域頂級基金會—LF AI基金會(Linux Foundation Artificial Intelligence Foundation)正式畢業(yè),成為中國首個從LF AI基金會畢業(yè)的開源項目,意味著Angel得到全球技術(shù)專家的認可,成為世界頂級的AI開源項目之一。
2)資源管理層面,除了CPU,還支持GPU、FPGA等異構(gòu)設(shè)備。我們是國內(nèi)比較早實現(xiàn)GPU虛擬化且技術(shù)比較領(lǐng)先的(見我們在IEEE ISPA2018發(fā)布的論文“GaiaGPU: Sharing GPUs in Container Clouds”)。
3)大數(shù)據(jù)與數(shù)據(jù)庫緊密結(jié)合,使用基于PostgreSQL的分布式數(shù)據(jù)庫PGXZ(后改名為TBase,并于2019年對外開源),支持HTAP(Hybrid Transaction and Analytical Processing,混合事務(wù)和分析處理),使得TDW更好地支持OLTP(On-Line Transaction Processing,聯(lián)機事務(wù)處理過程)的計算。
截至2019年,騰訊大數(shù)據(jù)走過十年,并且還在不斷演進中,我們正在探尋下一代計算平臺之路,我們在探索批流融合,我們在探索云原生大數(shù)據(jù),我們也在嘗試AI、大數(shù)據(jù)及云計算結(jié)合和軟硬件結(jié)合,我們還在研究數(shù)據(jù)湖和隱私計算等前沿技術(shù)……大數(shù)據(jù)、人工智能和云計算,正在成為支撐業(yè)務(wù)發(fā)展的基礎(chǔ)設(shè)施,下一代,會更精彩。
本文摘編于《騰訊大數(shù)據(jù)構(gòu)建之道》,經(jīng)出版方授權(quán)發(fā)布。(書號:9787111710769)轉(zhuǎn)載請保留文章來源。