隨著網(wǎng)易云音樂、新聞、考拉、嚴(yán)選等互聯(lián)網(wǎng)業(yè)務(wù)的快速發(fā)展,網(wǎng)易開始加速大數(shù)據(jù)平臺建設(shè),以提高數(shù)據(jù)獲取速度,提升數(shù)據(jù)分析效率,更快發(fā)揮數(shù)據(jù)價值。 本次演講主要分享網(wǎng)易如何圍繞和改造開源技術(shù),以產(chǎn)品化思維打造網(wǎng)易自己的大數(shù)據(jù)平臺, 也會分享一下網(wǎng)易在大數(shù)據(jù)平臺構(gòu)建和支撐互聯(lián)網(wǎng)業(yè)務(wù)過程中面臨的技術(shù)挑戰(zhàn),以及我們在調(diào)度、安全、元數(shù)據(jù)管理、spark多租戶、SQL流計算、高性能查詢引擎等關(guān)鍵技術(shù)環(huán)節(jié)的實踐經(jīng)驗。 最后會介紹一下,網(wǎng)易大數(shù)據(jù)平臺未來的技術(shù)路線規(guī)劃。
分享大綱:
1、大數(shù)據(jù)平臺概述
2、Sloth:實時計算
3、Kudu:實時更新存儲
4、Kyuubi:Spark 多租戶
5、未來規(guī)劃
正文:
2008年之前,網(wǎng)易一直在使用傳統(tǒng)數(shù)據(jù)庫軟件,隨著數(shù)據(jù)量的增大逐漸過渡到Hadoop平臺。2009年,網(wǎng)易發(fā)現(xiàn)單獨的Hadoop平臺不足以滿足內(nèi)部數(shù)據(jù)量的需求,便開始著手研發(fā)相關(guān)工具。2014年之后,隨著網(wǎng)易云音樂和網(wǎng)易考拉等業(yè)務(wù)的發(fā)展,網(wǎng)易原有工具也無法支撐龐大的數(shù)據(jù)使用訴求,網(wǎng)易開始進(jìn)入平臺化階段,推出網(wǎng)易猛犸和網(wǎng)易有數(shù)兩款產(chǎn)品。
網(wǎng)易猛犸是面向網(wǎng)易集團(tuán)內(nèi)部的大數(shù)據(jù)平臺軟件,網(wǎng)易有數(shù)是企業(yè)級智能可視化分析平臺。網(wǎng)易之所以推出這兩款產(chǎn)品,是因為單純維護(hù)Hadoop并不能滿足數(shù)據(jù)使用訴求,我認(rèn)為最核心的原因是大數(shù)據(jù)系統(tǒng)難以使用,以下是一個典型的數(shù)據(jù)處理流程:
數(shù)據(jù)從Kafka出發(fā),通過Flink處理同時寫入HDFS和HBase。HDFS的數(shù)據(jù)經(jīng)過Spark進(jìn)一步處理最終將匯總數(shù)據(jù)返回HDFS,傳遞給BI軟件進(jìn)行展示或者為線上數(shù)據(jù)提供支持。如果將大數(shù)據(jù)系統(tǒng)與數(shù)據(jù)庫內(nèi)核做對比,我們發(fā)現(xiàn)Kafka其實類似于數(shù)據(jù)庫中的Redo log,Hbase/ES代表一個索引,經(jīng)過進(jìn)一步匯總最終形成物化視圖HDFS Parquet。
表和索引通過Kafka日志保證一致,相當(dāng)于將組件重新組成類數(shù)據(jù)庫內(nèi)核的樣子讓各組件配合工作,保證系統(tǒng)的穩(wěn)定性和性能。整體來看,這件事情比較復(fù)雜,一番折騰下來,我們認(rèn)為大數(shù)據(jù)系統(tǒng)還是比較難用的,需要花費(fèi)大量精力組裝搭配,雖然這也證明了大數(shù)據(jù)系統(tǒng)比較靈活,但確實進(jìn)入門檻較高。
我們考慮要做一個大數(shù)據(jù)平臺,就需要先搞清楚我們的需求是什么。我認(rèn)為主要有以下四點:
一是可提供大數(shù)據(jù)的基礎(chǔ)能力;
二是在基礎(chǔ)之上提高使用效率,所謂的使用是指用戶在我們的大數(shù)據(jù)平臺上開發(fā)數(shù)據(jù)業(yè)務(wù),包括數(shù)據(jù)倉庫、數(shù)據(jù)可視化、推薦業(yè)務(wù)等的使用效率,這是大數(shù)據(jù)平臺的核心價值;
三是提升管理效率,運(yùn)營一個大數(shù)據(jù)平臺會涉及到各方面的管理,比如升級、擴(kuò)容、技術(shù)支持的代價等,我們需要提升管理效率進(jìn)而降低成本。
四是多租戶安全,大數(shù)據(jù)平臺服務(wù)于整個公司,公司內(nèi)部多條業(yè)務(wù)線都會使用,多租戶安全是必備功能。
在這些需求之下,網(wǎng)易大數(shù)據(jù)最終的整體架構(gòu)如下:
整個平臺主要有四大特點:
一是統(tǒng)一元數(shù)據(jù)服務(wù),Hive、Spark、Impala、HBase等元數(shù)據(jù)打通,也就是平臺上任意一張表既可用Hive查詢,也可用Spark、Impala來查,不需要在不同系統(tǒng)之間做元數(shù)據(jù)的同步。
二是流計算服務(wù),我們用SQL作為開發(fā)方式,完全與離線SQL兼容。
三是數(shù)據(jù)安全與權(quán)限,Spark、Hive、Impala、HDFS等組件的權(quán)限自動同步。從Spark、Hive、Impala進(jìn)來的請求,權(quán)限都可以得到控制,無論是通過表接口來訪問還是通過底層HDFS來訪問,權(quán)限都不會有任何泄露。
此外,我們也做列級權(quán)限控制以及角色訪問控制。在我們的平臺中,我們會為網(wǎng)易的每個用戶發(fā)放kerberos Key,我們采用kerberos認(rèn)證,權(quán)限可控制到個人級別,每個人的所有操作都會有審計。此外,我們提供一站式開發(fā)IDE,我們的客戶在IDE上進(jìn)行數(shù)據(jù)開發(fā),我們也提供一站式部署業(yè)務(wù)監(jiān)控體系。
在技術(shù)方面,我們的思路是滿足大致平臺需求從大數(shù)據(jù)平臺的需求出發(fā),采取自研和開源相結(jié)合的方式,在底層基礎(chǔ)組件方面以開源為主,在其上進(jìn)行增強(qiáng)和改進(jìn)。
在一些相關(guān)工具上,我們以自研來滿足用戶需求,我們做的事情主要包括Kafka服務(wù)化,我們把Kafka做成云服務(wù)的方式,在日志收集方面做了Data Stream系統(tǒng),主要功能是把日志收集到大數(shù)據(jù)平臺并轉(zhuǎn)成Hive表。我們也做了數(shù)據(jù)庫同步工具,完成數(shù)據(jù)庫到數(shù)據(jù)庫,數(shù)據(jù)庫到大數(shù)據(jù)系統(tǒng)之間的同步。
在Spark方面,我們做了多租戶和高可用。,引用我們引入開源項目Kudu解決數(shù)據(jù)實時性實施方面的問題。,并我們針對kudu在上面做了很多優(yōu)化。,采用Ranger作為統(tǒng)一權(quán)限控制中心,但Ranger性能有限,處理不了大量表和用戶場景,所以,我們不得不擴(kuò)展Ranger,優(yōu)化其性能使其可以支撐更多表和數(shù)據(jù)。