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