網易大數據平臺的Spark技術實踐

jopen 9年前發布 | 64K 次閱讀 Spark 分布式/云計算/大數據

網易的實時計算需求

對于大多數的大數據而言,實時性是其所應具備的重要屬性,信息的到達和獲取應滿足實時性的要求,而信息的價值需在其到達那刻展現才能利益最大化,例如電商網站,網站推薦系統期望能實時根據顧客的點擊行為分析其購買意愿,做到精準營銷。

實時計算指針對只讀(Read Only)數據進行即時數據的獲取和計算,也可以成為在線計算,在線計算的實時級別分為三類:Real-Time(msec/sec級)、Near Real-Time(min/hours)以及Batch(days)。 在批處理方面,MapReduce(MR)已經證明其為最有效的工具,隨著MR的開源實現Hadoop為代表的大數據分析技術的普及,其在大處理方面的能 力已經得到認可,但是它更適用于對集群上大數據的批處理,并不適用于實時處理大規模流數據。為了滿足實時性的要求,基于數據倉庫所構建的流計算和實時性計 算框架也不斷涌現,相關圍繞MR的實時性優化技術也蓬勃發展,比較代表性的系統Google Dremel、推ter Storm以及Yahoo S4等。

大數據的應用類型主要分為:批處理(Batch Processing)和流處理(Stream Processing)兩方面。批處理是先存儲后處理(Store-Then-Process),流處理是直接處理(Straight-Through- Processing),為提高商業智能的反映時間,目前廣泛所采取的大數據處理框架,例如MR和Dryad所面向的主要是大規模數據分析,以批處理計算 為主,其實時性需求得不到滿足。常用的應用有在線推薦、網頁點擊分析、傳感網絡、交通分析以及金融中的高頻交易,對實時分析處理(Real Time Analytic Processing, RTAP)的需求越來顯著,網易公司作為國內最大的門戶網站之一,實時性也是公司目前互聯網產品所應具備的重要屬性。

網易大數據Spark技術應用

Spark技術代表未來數據處理的新方向,Spark是UC Berkeley AMP lab開源的類Hadoop MapReduce的通用并行計算框架,Spark基于MapReduce實現分布式計算,擁有Hadoop MapReduce具有的優點。不同于MapReduce的是,Job中間輸出和結果可以保存在內存中,從而不再需要讀寫HDFS,因此Spark能更好 地適用于數據挖掘與機器學習等需要迭代的MapReduce的算法。

在網易大數據平臺中,數據存儲在HDFS之后,提供Hive的數據倉庫計算和查詢,要提高數據處理的性能并達到實時級別,網易公司采用的是 Impala和Shark結合的混合實時技術。Cloudera Impala是基于Hadoop的實時檢索引擎開源項目,其效率比Hive提高3-90倍,其本質是Google Dremel的模仿,但在SQL功能上青出于藍勝于藍。Shark是基于Spark的SQL實現,Shark可以比 Hive 快40倍(其論文所描述), 如果執行機器學習程序,可以快 25倍,并完全和Hive兼容。

圖1和圖2分別測試的計算能力和實時查詢性能經過初步測試,在網易的實時計算平臺,在大數據實時查詢系統中,Impala在數據處理方面的速度可 以 相比HIVE達到3倍到30倍的加速比,Shark可以相比HIVE達到 1.5到15倍的加速比,相比較Impala和Shark引擎,通常Impala會比Shark快一倍,這里可能會引出思考,既然Impala實時性如此 好,為何還需要Shark呢?

在設計大數據平臺的時候,我們發現Impala性能不錯,但是其對舊Hive的數據不兼容,因為目前的大數據應用中很多都是Hive的組織方式, 而 Shark可以完全兼容舊的數據,因此在目前的數據結構中必須采用混合的數據處理模式。Hive和Impala會協同存在一段時間, Hive主要為Predefined Queries,并主要處理批處理相關作業,而Impala則處理交互的查詢(AD-HOC Queries),使得大數據系統既支持OLTP,也支持OLAP,以達到實時分析處理(Real Time Analytic Processing, RTAP)的水平。

網易大數據平臺的Spark技術實踐

圖1 網易大數據平臺性能測試(Count/Sum/Avg操作)

網易大數據平臺的Spark技術實踐

圖2網易大數據平臺性能測試(Join/Ad-hoc查詢操作)

總結

如果要評價2012到2013年度IT業界熱詞,非“大數據”一詞莫屬。ROI(Return On Investment)投資回報率已經演化為Return On Information,信息的回報率成為互聯網公司的一個重要指標,如果所掌握的海量數據都是一堆“垃圾”,沒有金礦去挖掘,那大數據也無從談起,而提 高ROI的一個重要屬性就是實時性,提高數據的反應時間需要技術做支撐和保障,網易作為中國頂尖的互聯網公司之一,在大數據方面也是最早的先行者,特別實 時計算技術方面,公司很早就開始采用最新的技術來提供服務,例如Impala和Shark等,不難發現,網易的大數據系統可以靈活的選擇計算實時引擎,總 體上系統在實時處理方面的能力可以提升2到15倍,這對于提升公司的生產效率有顯著成效,在后續的工作中期望可以進一步提升實時級別,目前只能做到秒級, 能否達到毫秒級甚至微秒級別是將來的一個研發方向,總之對于海量數據計算、實時性方面有強烈需求的公司應用落地Spark是很好的選擇。

參考資料

[1] Storm Distributed and fault-tolerant real time computation

[2] Leonardo Neumeyer, Bruce Robbins, Anish Nair, Anand Kesari. S4: Distributed Stream Computing Platform. 2010 IEEE International Conference on Data Mining Workshops (ICDMW).

[3] Cloudera Impala https://github.com/cloudera/impala

Reynold S. Xin, Josh Rosen, et al. Shark: SQL and rich analytics at scale. SIGMOD Conference 2013.

來自:http://www.thebigdata.cn/JieJueFangAn/12876.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!