對于大多數(shù)的大數(shù)據(jù)而言,實時性是其所應具備的重要屬性,信息的到達和獲取應滿足實時性的要求,而信息的價值需在其到達那刻展現(xiàn)才能利益最大化,例如電商網(wǎng)站,網(wǎng)站推薦系統(tǒng)期望能實時根據(jù)顧客的點擊行為分析其購買意愿,做到精準營銷。
實時計算指針對只讀(Read Only)數(shù)據(jù)進行即時數(shù)據(jù)的獲取和計算,也可以成為在線計算,在線計算的實時級別分為三類:Real-Time(msec/sec級)、Near Real-Time(min/hours)以及Batch(days)。 在批處理方面,MapReduce(MR)已經(jīng)證明其為最有效的工具,隨著MR的開源實現(xiàn)Hadoop為代表的大數(shù)據(jù)分析技術的普及,其在大處理方面的能 力已經(jīng)得到認可,但是它更適用于對集群上大數(shù)據(jù)的批處理,并不適用于實時處理大規(guī)模流數(shù)據(jù)。為了滿足實時性的要求,基于數(shù)據(jù)倉庫所構建的流計算和實時性計 算框架也不斷涌現(xiàn),相關圍繞MR的實時性優(yōu)化技術也蓬勃發(fā)展,比較代表性的系統(tǒng)Google Dremel、Twitter Storm以及Yahoo S4等。
大數(shù)據(jù)的應用類型主要分為:批處理(Batch Processing)和流處理(Stream Processing)兩方面。批處理是先存儲后處理(Store-Then-Process),流處理是直接處理(Straight-Through- Processing),為提高商業(yè)智能的反映時間,目前廣泛所采取的大數(shù)據(jù)處理框架,例如MR和Dryad所面向的主要是大規(guī)模數(shù)據(jù)分析,以批處理計算 為主,其實時性需求得不到滿足。常用的應用有在線推薦、網(wǎng)頁點擊分析、傳感網(wǎng)絡、交通分析以及金融中的高頻交易,對實時分析處理(Real Time Analytic Processing, RTAP)的需求越來顯著,網(wǎng)易公司作為國內(nèi)最大的門戶網(wǎng)站之一,實時性也是公司目前互聯(lián)網(wǎng)產(chǎn)品所應具備的重要屬性。
網(wǎng)易大數(shù)據(jù)Spark技術應用Spark技術代表未來數(shù)據(jù)處理的新方向,Spark是UC Berkeley AMP lab開源的類Hadoop MapReduce的通用并行計算框架,Spark基于MapReduce實現(xiàn)分布式計算,擁有Hadoop MapReduce具有的優(yōu)點。不同于MapReduce的是,Job中間輸出和結果可以保存在內(nèi)存中,從而不再需要讀寫HDFS,因此Spark能更好 地適用于數(shù)據(jù)挖掘與機器學習等需要迭代的MapReduce的算法。
在網(wǎng)易大數(shù)據(jù)平臺中,數(shù)據(jù)存儲在HDFS之后,提供Hive的數(shù)據(jù)倉庫計算和查詢,要提高數(shù)據(jù)處理的性能并達到實時級別,網(wǎng)易公司采用的是 Impala和Shark結合的混合實時技術。Cloudera Impala是基于Hadoop的實時檢索引擎開源項目,其效率比Hive提高3-90倍,其本質(zhì)是Google Dremel的模仿,但在SQL功能上青出于藍勝于藍。Shark是基于Spark的SQL實現(xiàn),Shark可以比 Hive 快40倍(其論文所描述), 如果執(zhí)行機器學習程序,可以快 25倍,并完全和Hive兼容。
圖1和圖2分別測試的計算能力和實時查詢性能經(jīng)過初步測試,在網(wǎng)易的實時計算平臺,在大數(shù)據(jù)實時查詢系統(tǒng)中,Impala在數(shù)據(jù)處理方面的速度可以 相比HIVE達到3倍到30倍的加速比,Shark可以相比HIVE達到 1.5到15倍的加速比,相比較Impala和Shark引擎,通常Impala會比Shark快一倍,這里可能會引出思考,既然Impala實時性如此 好,為何還需要Shark呢?
在設計大數(shù)據(jù)平臺的時候,我們發(fā)現(xiàn)Impala性能不錯,但是其對舊Hive的數(shù)據(jù)不兼容,因為目前的大數(shù)據(jù)應用中很多都是Hive的組織方式,而 Shark可以完全兼容舊的數(shù)據(jù),因此在目前的數(shù)據(jù)結構中必須采用混合的數(shù)據(jù)處理模式。Hive和Impala會協(xié)同存在一段時間, Hive主要為Predefined Queries,并主要處理批處理相關作業(yè),而Impala則處理交互的查詢(AD-HOC Queries),使得大數(shù)據(jù)系統(tǒng)既支持OLTP,也支持OLAP,以達到實時分析處理(Real Time Analytic Processing, RTAP)的水平。
圖1 網(wǎng)易大數(shù)據(jù)平臺性能測試(Count/Sum/Avg操作)
圖2網(wǎng)易大數(shù)據(jù)平臺性能測試(Join/Ad-hoc查詢操作)
總結如果要評價2012到2013年度IT業(yè)界熱詞,非“大數(shù)據(jù)”一詞莫屬。ROI(Return On Investment)投資回報率已經(jīng)演化為Return On Information,信息的回報率成為互聯(lián)網(wǎng)公司的一個重要指標,如果所掌握的海量數(shù)據(jù)都是一堆“垃圾”,沒有金礦去挖掘,那大數(shù)據(jù)也無從談起,而提 高ROI的一個重要屬性就是實時性,提高數(shù)據(jù)的反應時間需要技術做支撐和保障,網(wǎng)易作為中國頂尖的互聯(lián)網(wǎng)公司之一,在大數(shù)據(jù)方面也是最早的先行者,特別實 時計算技術方面,公司很早就開始采用最新的技術來提供服務,例如Impala和Shark等,不難發(fā)現(xiàn),網(wǎng)易的大數(shù)據(jù)系統(tǒng)可以靈活的選擇計算實時引擎,總 體上系統(tǒng)在實時處理方面的能力可以提升2到15倍,這對于提升公司的生產(chǎn)效率有顯著成效,在后續(xù)的工作中期望可以進一步提升實時級別,目前只能做到秒級, 能否達到毫秒級甚至微秒級別是將來的一個研發(fā)方向,總之對于海量數(shù)據(jù)計算、實時性方面有強烈需求的公司應用落地Spark是很好的選擇。