從業務驅動和技術實現角度談騰訊大數據
最近,騰訊大數據官方網站 data.qq.com 正式上線,引來業界的猜測和討論,上線背后的含義是什么、大數據的創新應用模式有哪些、騰訊大數據平臺的關鍵技術是什么......帶著這些問題,筆者采訪了騰訊數據平臺部高級產品經理趙文昊和高級工程師趙偉。
InfoQ:啟用 data.qq.com 這個重量級的二級域名,看起來像是一種戰略層面的體現,能否解釋其背后的過程和含義?
趙文昊:相比較其他互聯網公司,騰訊在大數據方面發聲較少,一直非常低調。然而外界對于騰訊大數據一向非常 的關心和好奇,data.qq.com 的出現就是為了解答外界對騰訊大數據的所有疑惑,并希望借此平臺可以對外界分享騰訊相關的信息、技術以及產品,同時促進更多與外部的合作。
騰訊經過 10 余年的發展,在業務發展的同時,也在數據應用和平臺能力方面積累了很多的經驗,我們相信這其中會有許多對行業發展十分有益的地方,我們認為現在是一個很好 的時機將其中的一部分回饋給行業。從去年開始,我們逐步將騰訊分布式數據倉庫(TDW)等對社區進行開源,這是我們整體計劃中的一部分。我們希望 data.qq.com 的上線可以有助于縮短我們與行業領先開發者/平臺之間的溝通距離,期待更多具有創新和實際商業價值的合作案例可以延伸開來。
InfoQ:目前騰訊的大數據平臺團隊規模多大,其負責的業務范圍包括哪些?
趙文昊:目前專門支撐該平臺的團隊規模共有 200 多人,分別在技術平臺建設、數據挖掘算法應用、產品策劃運營和質量保障等各領域上努力著。同時,騰訊各 BG 業務線的產品及技術運營團隊也是騰訊大數據平臺的一份子,共同為騰訊的大數據戰略而戰斗著。
InfoQ:現在很多企業的大數據平臺都是服務于其核心業務,騰訊大數據官方網站的上線,是不是意味著騰訊的數據平臺也逐漸走向前臺,以產品的形式服務于更多的客戶?
趙文昊:如前所說,我們認為現在是一個很好的時機,將我們多年來在數據領域摸爬滾打沉淀下來的在技術架構、 產品應用等各方面經驗回饋給行業,也很期待通過 data.qq.com 建立起與行業、社區的直接聯系,催生更緊密、創新且具有商業價值的合作。在大數據應用頁面可以看到,目前我們已經有許多基于大數據的應用,并以成熟的產品 形態服務著我們外部的客戶。未來我們會有更多基于大數據的 To B 和 To C 產品來面向外部的客戶。
InfoQ:大數據的產品和服務形式未來會有哪些創新和突破?
趙文昊:未來我們希望能夠在健康醫療、征信金融、影視娛樂等方面有更多的大數據應用,從而改變目前傳統行業粗放、低效的現狀。大數據的核心在于海量信息處理帶來的精準和預測,因此我們未來的產品一定也會緊緊圍繞這兩方面的能力去展開。
InfoQ:技術和業務是如何驅動騰訊大數據平臺發展的?
趙文昊:從 2009 年我們開始自研騰訊分布式數據倉庫(TDW),2011 年正式發布上線到 2013 年初,TDW 完成了對公司內部幾乎全業務的覆蓋。期間,隨著業務對實時數據處理需求的不斷增強,我們基于 Storm 又研發了騰訊實時計算平臺 TRC。與此同時,在數據接入方面我們研發了實時數據接入和分發系統 TDBank,使得業務數據采集延遲從之前的天級別縮短到目前的秒級別。可以說,是騰訊的海量數據和業務不斷提升的要求驅動我們成長為今天的規模,達到了 8800 臺單集群服務器,10000 億日接入消息數,8.5PB 日掃描數據量等業內引以為傲的體量。可以說我們從離線海量計算平臺朝實時海量計算平臺的發展是中國互聯網行業在數據領域高速發展的一個縮影。
InfoQ:數據平臺的技術架構是什么樣的?設計思路是什么?
趙偉:數據平臺部的技術架構如下圖所示:
TDBank 為整個平臺提供數據接入功能,是數據平臺部與其他業務數據交互的接口。TDBank 大部分數據輸送給了兩大基礎平臺,TDW 離線計算平臺和 TRC 實時計算平臺。除了 TDW 和 TRC 兩大基礎平臺,我們還有 tPG、HBase、Hermes 這些平臺來滿足業務多樣化的數據處理需求。整個平臺還包含統一的集成開發環境,用來進行 TDW 和 TRC 上的業務開發;統一任務調度 Lhotse,驅動和管理各種工作流;統一服務框架,對外公司內外提供高性能、跨語言、高可靠性的數據服務 API。所有這些系統,都是通過 Gaia 進行資源調度和管理的,目前 Gaia 也支持 Doker 管理。
平臺的設計思路是平臺化、規模化、實時化、服務化。平臺化是將業務由共性的需求,抽象出來,做成平臺,例如針對業務的離線計算,我們建設了 TDW 平臺;針對實時計算,我們建設了 TRC 平臺。規模化是將我們的系統規模做大,以提升資源共享能力和運營效率。實時化是一個趨勢,我們的系統一開始都是離線的,隨著規模和穩定性的提升,我們會向 準實時、實時演進,為業務帶來更快速,時延更小的數據服務。服務化是我們在一個系統成熟時,我們會將它以 API 服務的方式,暴露給外部,讓我們的系統與外部業務整合更容易。
InfoQ:對于海量數據的離線和實時接入和處理,騰訊數據平臺分別采用了哪些系統?
趙偉:TDBank 主要負責海量數據離線和實時數據接入,它具備高可靠、高一致性、低延遲等特點,解決了異構數據源適配、公網傳輸、加密、分布式緩存等問題,目前數據平臺部的大部分系統都是通過 TDBank 接入數據的。
我們離線數據處理使用 TDW 平臺。TDW 基于 Hive、Pig、Hadoop、Spark 等研發,支持 SQL、Pig Latin、MR、SPARK 等編程接口,為業務提供離線服務。
TRC 是我們的實時數據處理平臺。它基于 JStorm,是我們使用 Java 重寫的 Storm 版本。為了方便業務使用,我們為 JStorm 開發了 SQL 和 Pig Latin 語言接口,并且提供了集成開發環境。
InfoQ:能否詳細介紹下幾個關鍵系統的技術點?
趙偉:TDW 的關鍵技術點:
TDW 是我們研發時間最長的一個系統,從 2009 年開始到目前一直在演進。TDW 我們使用了 Hive+Hadoop 的架構,但是在運營過程中,我們做了大量優化。
在 Hive 方面,我們在功能擴充、易用性、性能、穩定性方面都做了大量優化:
- 在功能擴充方面,目前在 Oracle 上能找到的常用功能,TDW 都已有對應實現。主要包括:1)基于角色的權限管理;2)兼容 Oracle 分區;3)窗口函數;4)過程語言多維分析;5)共用表達式 CTE;6)DML 語言擴充;7)入庫數據校驗。
- 在易用性方面,標準化 SQL 語法,提供 SQL/MED 使得 TDW 與 Oracle、PG 互聯互通。更重要的是,提供非常友好的 TDW 集成開發環境 IDE,目前用戶已經接近 500 人,分布在 7 大事業群 43 個部門,每天超過 100 人使用 TDW IDE 進行數據開發和數據提取。
- 在性能優化方面,開源 Hive 支持的文本格式效率比較低,TDW 采用二進制存儲格式,提升讀寫效率,并支持 lzo 壓縮。同時,在擴充 Hash Join、按行 split、orderby+limit 等方面進行了大量技術優化。另外,TDW 將社區優化補丁引入進來,比如 SQL MR 并行優化,使得復雜計算效率提升 50%。我們還引入了 HLLC 估值算法,來優化 count distinct 的性能,獲得了良好的效果。在 2014 年下半年,我們著手了 Hive on Spark 的研發,目前大部分 SQL 語法已經可以運行在 hive on spark 上,并且有明顯的性能提升。
- 在穩定性方面,開源 Hive 很多隱含缺陷在大壓力下逐漸凸顯,TDW 做了大量的優化工作。主要包括:容災與負載均衡、大結果集獲取接口優化、元數據接口優化、內存泄漏檢測、服務過載保護和非線程安全容器優化等。
- 除了針對 Hive 本身優化之外,TDW 引入 postgresql(BI 庫)作為輔助,通過其良好的 DB 特性,來彌補 Hadoop 天然在 update/delete 操作上的不足。BI 庫很好的滿足了用戶 BI 展現、維度表更新、小數據集高效分析和 Cognos/SAS 軟件對接等需求,使得用戶無需復雜的數據流轉,即可以在 TDW 內完成全套作業。 </ul>
- Hadoop 的單點問題的解決,包括 NameNode 和 Jobtracker 單點問題。我們是在 Hadoop 1.0 的基礎上解決的這些問題,當時 Hadoop 2.0 并沒有穩定版本發布。解決這些問題,使我們 TDW 系統在 2013 年下半年,達到單機群 4400 臺的規模。
- HDFS RAID 的應用。我們根據運營數據,將數據分級,進行差異化壓縮。對于不常用的歷史數據,我們做了 GZ 壓縮,并且使用 HDFS RAID 技術,降低存儲副本,從而降低存儲成本。
- YARN 的優化。在 2013 年低,我們引入了 YARN,在它的基礎上,結合我們自研的 torca 調度系統,研發了 Gaia 調度系統。Gaia 既可以做離線業務資源調度,也可以做在線業務的資源調度,還支持 docker 的管理。Gaia 支持內存軟硬 limit、磁盤 IO、網絡 IO 隔離等,在資源利用率方面相對 YARN 有較大提升。
- Spark 的應用與優化:通過 Spark on Gaia 的支持,使 Spark 的擴展性和性能大大提升。目前 TDW Spark 集群已經突破千臺規模。在 Spark 實踐中,相對于 MapReduce、SQL/Pig 我們獲得了超過 10 倍以上的性能提升。同時我們在 Spark 的易用性、穩定性和高效等方面進行了大量的特性研發。 </ul>
- Storm on Gaia:開源的 Storm 并沒有資源管理的功能,單個集群的資源不能根據業務的需要動態調整。在容災方面,也有問題。我們將 storm 移植到了 Gaia 上,使業務可以靈活的申請資源。
- Java 改寫的 JStorm:開源的 Storm 使用函數式語言,比較小眾,影響開發和優化效率。我們最終決定使用 Java 改寫 Storm,目前 TRC 已經穩定運行在 JStorm 上。
- Pig/SQL on TRC:在運營推廣中,我們發現業務對之前 TRC 原始的編程模式很不適應,業務的開發調試效率非常低。在做了大量調研后,我們開發了 Pig on TRC 和 SQL on TRC,讓用戶用更高層次的語言編寫業務邏輯。在 IDE 上,也做了支持。最終讓用戶的使用效率大大提升。 </ul>
- 騰訊數據量“大”的問題,騰訊的用戶和產品數量都比較多,數據量大,數據分析的復雜度高,對底層技術平臺的要求自然很高。如此大量的數據和復雜的 分析,每天要高效、穩定的在我們的數據平臺上運行,對我們的平臺技術有很大挑戰。我們在系統的容災、監控、問題處理與恢復做了大量工作,確保系統出現問題 或者我們做重大變更時,對業務的影響盡可能的少。為了達到這個目標,在系統設計時,我們要做到無單點故障,所有的模塊都是分布式的,我們現在基本上做到 了。
- 開源軟件的不可靠的問題,我們的很多系統是基于開源軟件研發的。開源軟件能快速搭建原型,但是真正在用的時候,會發現很多問題,有的問題可能只有 騰訊這樣的數據規模遇到。我們過去幾年,花費了大量的人力物力,修復開源軟件中的 bug,優化它的性能,并基于騰訊的業務特點進行定制。
- 成本被挑戰的問題,當我們的大數據系統成熟好用時,業務的數據存儲和計算需求也開始暴增,由此帶來的平臺的成本壓力也非常大,受到老板的挑戰。平 臺在過去幾年做了大量優化成本的工作,包括差異化壓縮,使數據相對文本有 20 倍的壓縮比,引入 Hadoop Raid 技術,使用估值算法代替精確計算節省計算資源等,使整個平臺的單位成本,使整個平臺的單位成本持續大幅度降低。 </ol>
我們改造過的 Hive,開源到騰訊外部,可以訪問這里查看。
在 Hadoop 方面,我們在穩定性、性能、成本方面做了優化:
TRC 的關鍵技術點包括:
InfoQ:在大數據系統研發過程中,遇到過哪些難點,有什么解決的經驗?
趙偉:歸納一下,主要有以下三方面的問題:
InfoQ:如何看待大數據技術的未來發展趨勢?
趙偉:大數據技術未來的發展大趨勢是處理的數據量更大、處理邏輯更復雜、實時性要求更高、技術更迭更快。例 如 MapReduce 技術雖然前幾年很火,但是因為在一些場景下性能不高,使這些業務選擇了 Spark 和 DAG 計算。相信隨著大數據應用的豐富和深入,對基礎平臺的技術的要求會越來越高。我們也在不斷關注和探索相關的大數據技術,持續創新,為大數據技術的進步做出 貢獻。
編后語
在未來的 IT 主流趨勢中,云計算和大數據是一對雙子星。相比云計算,大數據領域總是給人一種看不見摸不著但是用得著的感覺。騰訊大數據官網的上線是一種良好的開端,開 發社區可以近距離地觀察和理解大數據的實際應用和生態系統,至于如何搭上巨人的順風車,則是“仁者見仁、智者見智”了。
采訪嘉賓
趙文昊,騰訊數據平臺部高級產品經理。2011 年畢業于浙江大學,獲得管理學和文學雙學士學位。同年進入美國約翰霍普金斯大學深造,于 2013 年獲得理學碩士學位。2014 年加入騰訊,負責騰訊大數據的產品設計和品牌營銷。騰訊大數據官網 data.qq.com 的主導者和負責人,騰訊大數據報告的策劃和負責人。
趙偉,騰訊數據平臺部高級工程師。2009 年畢業于哈爾濱工業大學,同年進入騰訊數據平臺部,從事騰訊分布式數據倉庫 TDW 研發工作,先后主導了 TDW SQL 查詢引擎、TDW 集成開發環境、tPG 等的研發項目 。專注于數據倉庫的構建,致力于 Hive、Hadoop、PG 等在數據倉庫中的應用。目前負責 TDW 平臺功能、性能、易用性的規劃及研發及分布式 PG 的研發工作。
<span id="shareA4" class="fl">
</span>