“大數據”概念于20世紀90年代被提出,最初只是對一些在一定時間內無法用傳統方法進行抓取、管理和處理的數據的統稱。隨著時間的推移和科技的發展以及物聯網、移動互聯網、SNS的興起,每年產生的數據量都以幾何級數增長,《IDC Digital Universe in 2020》報告稱全球產生的數據將在2020年達到40ZB(1ZB=10億TB=100萬PB)。在這急劇增長的數據面前,各種相關概念、技術層出不窮,一直不停地吸引大家的眼球。同時,大數據的內涵也發生了重大變化。讓我們一起來思考一下:什么是大數據?能用它來解決什么問題?該如何應用大數據技術?目前有哪些難點?大數據的未來是什么?
什么是大數據?
業界通常用Volume、Variety、Value和Velocity(簡稱為“4V”,即數據體量巨大、數據類型繁多、價值密度低和處理速度快)四個特征來顯著區分大數據與傳統數據。目前業界可能更關注的是Volume(容量)和Velocity(速度),而忽略了數據價值以及數據體系建設,這種情況充其量只能稱之為海量數據,引用淘寶網商業智能部資深總監車品覺的話來說就是“坐在數據金礦上啃饅頭”。在傳統的4V基礎上,大數據還應該包含數據交換、互聯、質量、安全等數據體系建設以及可以建立上層數據應用的整個生態圈。
大數據能解決什么問題?
大數據現象在物理學、生物學、環境生態學、自動控制等科學領域和軍事、通信、金融等行業的存在已有些時日。從本質上來說,大數據主要解決的是海量數據存儲、計算、挖掘、展現的問題,基于此之上可以誕生一系列應用或商業模式。
在目前階段,解決的問題主要分為3類。
- 拓展傳統的商業智能(BI)領域。以前針對大數據量的統計、關聯分析、趨勢預測由抽樣變成全量分析,將數據回流到各種報表。
- 業務流程改進。對各種數據進行聚合分析,用來作為業務流程改進和考核的依據。
- 數據產品和商業應用。通過對已有數據或數據處理能力進行服務化或產品化包裝,形成數據產品或數據服務。
該如何應用大數據技術?
大數據技術是一個整體,沒有統一的解決方案,相關技術涉及到數據的傳輸、存儲、計算、挖掘、展現、開發者平臺6個部分。
- 作為數據處理的入口,數據傳輸和同步一般會采用基于時間線的實時同步和批量同步兩種方案。基于時間線的實時同步,典型的系統有LinkedIn的Databus+Kafaka組合、淘寶開源的TimeTunnel;批量同步,典型的系統有Facebook開源的Scribe、Cloudera開源的Flume、Hadoop社區開源的Chukwa。
- 在數據量超過單機承載能力時,數據存儲在擴展性和可用性上會面臨較大挑戰,一般會采用分布式存儲。如基于內核層的Ceph、GlusterFS,用戶層的有HDFS、GFS,業務層的HBase(列存儲數據庫)、MongoDB(文檔數據庫)、Cassandra(K/V型數據庫)、Neo4j(圖形數據庫)等。
- 大數據技術的核心是基于存儲的計算。計算一般分為離線計算、在線計算(流式計算、即時計算)。離線計算經過多年的積累和沉淀,已經成為數據處理的首選平臺,承載了絕大多數的數據處理任務,典型的有Hadoop以及之上的Hive/Pig、阿里的ODPS;在線計算根據業務特征分為針對實時數據源進行固定規則計算的流式計算系統和針對非實時數據源進行靈活運算(無法預算)的即時計算系統。典型的流式計算系統有Storm,典型的即時計算系統有阿里的Garuda。
- 為了建立數據關系及數據模型,需要進行數據挖掘。為了進行海量數據的數據挖掘,一般會建立一個運行在分布式計算集群上的公用算法平臺來進行各種數據處理,典型系統為基于Hadoop的Mahout、RHadoop。
- 為了展現海量數據結果的多樣性、多角度、多層次,需要用到數據可視化相關技術,典型的系統是Facebook Insights。
- 數據處理涉及到的環節錯綜復雜、盤根錯節,如何讓大家易使用、保障所有系統的穩定運行,需要有一個平臺來幫助開發者簡化或完成數據處理的各個環節,例如提供數據處理、調度工作流系統、查看元數據、提供數據開發IDE等,典型的系統是Precog。
目前有哪些難點?
除了應對海量增長的數據帶來的存儲、計算、挖掘算法的技術難點之外(技術難點細節相信大家基本上都能在網上找到相應資料),其實還包括數據本身帶來的業務難點。
在業務規模不大時,可以利用開源技術搭建起一整套數據處理系統。而隨著業務增長,就需要根據業務特色按需修改或開發一些滿足特定領域需求的系統。
在一些公司,業務急速增長和擴張,業務難點和技術難點同樣突出,例如數據源源不斷地產生,數據的質量、安全、成本該如何保障呢?前端業務庫的元數據變更會給后端的數據處理造成什么后果?這些問題處理得不好很容易功虧一簣,讓數據成為一堆大垃圾和高成本的企業負擔。
針對業務難點,在保證數據質量方面,需要從數據源頭進行規范,建立起一整套邏輯結構元數據和業務元數據系統來進行數據的約束、變更通知和業務基線保障(基線指根據業務方需要的時間來倒推數據生產完成時間)。基于此來進行數據的血緣分析(關聯關系)、元數據查詢、數據生產時間等功能;同時需要對數據的波動、變化做多樣化的監控和報警規則管理,確保數據是及時、準確、可用的。
企業所擁有的數據可能成為獲得競爭優勢的關鍵,企業的數據和基礎設施的安全也比以往任何時候都重要。因此從業務庫到數據倉庫的整個過程都需要考慮安全,包括數據傳輸、計算過程都需要進行認證、鑒權。鑒權的角度需要站在數據本身的角度去考慮。
數據在源源不斷地增長,數據直接擁有成本也在隨之提高,一些公司用來處理數據的服務器臺數都要以萬來計。因此,需要從大數據處理的全局角度來考慮如何從存儲、計算上盡可能地降低成本,讓模式可以持續。例如對數據采用冷熱分離(冷數據存儲到磁帶上等)、按業務特征進行分層壓縮(按列存儲、存儲數據差異等)、計算資源細粒度錯峰化(資源進行細粒度分配或預估、按照業務時間進行波峰與波谷整合)、數據生命周期管理(比如進行過期垃圾數據清除)等手段來節省成本。
如何衡量數據價值?
我們有理由相信,不同數據中蘊含的價值是有差異的。如何衡量數據的價值可以從數據末端來進行考慮,可以如前面提到的那樣建立一套元數據中心來管理整個企業的數據流轉和關聯。基于此可以分析每份結果表的引用關系鏈,采用業務價值/投資回報率(ROI)模式來衡量源頭數據的價值,優先保障這些高價值源頭表的數據質量。
大數據的未來?
大數據正在改變一些行業的運營發展規則,也誕生了一批數據服務公司,未來的大數據將會真真切切地落地在我們周圍,很多企業不再需要建立一套如此復雜的數據處理系統,數據和計算能力都會變成一種資源按需使用。基于此,我們可以將大數據的未來分為三類。
第一類專注于做數據處理平臺,也就是DaaS(Data as a Service),典型的公司有Precog。Precog公司提供海量數據存儲和分析服務,該服務負責處理數據的抽取、轉換、集成分析和可視化等過程,以及服務運行所基于的基礎架構,提供一整套IDE和Quirrel查詢分析語言。
第二類為利用自有數據進行深度整合產生的新業務和新的商業模式,這類公司本身就具有海量數據,典型的如Google的廣告/搜索/地圖/Glass/無人駕駛汽車、Facebook的Graph search、阿里的金融業務。
第三類為提供數據、計算以及數據市場三種服務的公司。這類公司既有海量數據,同時又擁有多年的數據處理技術積累,它們會將擁有的海量數據進行深度清洗、整合與關聯,并建立一整套包括數據傳輸、存儲、計算、挖掘、展現的技術服務,在此基礎上會提供一個統一的數據開發平臺完成用戶認證、數據鑒權、工作流、監控告警、數據管理(元數據管理、數據質量管理、數據生命周期管理)、數據開發等工作。基于此提供一整套數據交換服務和App Engine。在此平臺上,可以完成數據處理、交換以及開發數據應用App等功能。
總結
大數據相關的概念和技術會繼續更廣泛地沖擊技術人員的眼球,我們需要做的是抓住問題的本質,盡可能理性地分析自己對數據的核心需求是什么、用它來解決什么問題、解決這些問題是不是一定要用復雜的分布式數據處理系統、所學的技術處于大數據技術的哪一層。
作者占超群,花名離哲,阿里巴巴集團數據平臺與產品部數據倉庫架構師,負責實時計算系統研發,低調的華麗踐行者。擁有多年電信行業數據分析類項目開發管理經驗,專注于實時計算/實時交互/數據服務化,愛好與分布式數據處理相關的技術。