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