
2015年6月15日-17日,Spark Summit 2015于美國舊金山舉行,近2000位技術專家見證和參與了這次盛會。歷時三天的會議里,來自Databricks、UC Berkeley AMPLab、Baidu、Alibaba、Yahoo!、Intel、Amazon、Red Hat、Microsoft等數十個機構共分享了近100個精彩紛呈的報告,其中Keynotes演講主要集中在前兩日的上午,下午則分為開發者、數據科學、應用和用戶案例分會場,整個會議的第三天是由培訓構成。與往年一樣,Keynotes的分享主要采取特性分享加Demo演示,區別就是本次峰會的Demo演示時間稍微顯長。

圖1:Databricks的CTO Matei Zaharia
在此次峰會里感受深的就是中國的Spark發展太快了,Spark發起人Databricks的CTO Matei Zaharia在Keynotes重點指出:Spark大的集群來自騰訊——8000個節點,單個Job大分別是阿里巴巴和Databricks——1PB,震撼人心!同時,截止2015年6月,Spark的Contributor比2014年漲了3倍,達到730人;總代碼行數也比2014年漲了2倍多,達到40萬行。

圖2:Spark的大規模應用
此外,以Spark為中心的開源生態系統,從應用、運行環境、數據源等方面都有巨大的發展,基本囊括了與大數據相關的所有系統,具體請看下圖:

圖3:Spark連接開源大數據生態系統
Matei Zaharia在演講中表示,當下Spark重要的核心組件仍然是Spark SQL。而在未來的幾次發布中,除了性能上的更加優化外(包括代碼生成和快速Join操作),還要提供對SQL語句的擴展和更好地集成。2015年發展的重點將是數據科學和平臺API化,除了傳統的統計算法外,還包括學習算法,使得SparkR得到了長足的發展,同時也會使Spark的生態系統越來越完善。此外,還有Tungsten項目和DAG可視化、調試工具等同樣是持續的重點發展方向。
被Google收購的Timeful公司的數據副總裁華人Gloria Lau在她的演講“A Tale of a Data-Driven Culture”中重點強調千萬我們不要把招過來的數據科學家都后培養成只會SQL的“猴子”了,而是需要讓數據科學家集中在怎么樣打造數據產品上來。
另外聽了Solr、ElasticSearch與Spark融合的兩個主題,一個是 Lucidworks的Timothy Potter,他是Solr的PMC成員,也是《Solr in Action》的作者,他分享的主題是“Integrating Spark and Solr”,發現Solr與Spark的融合更有效一些,特別是SolrRDD可以非常方便地讓Spark從Solr里將數據讀出計算,由于我問了兩個跟Solr、ElasticSearch和Spark的問題,一個是Solr與ElasticSearch的區別,一個是ElasticSearch與Spark融合是否比Solr更好一些,當時他回答的有些簡單,所以會后跟Timothy Potter在一個開源組里的日本人Taka Shinagawa主動來跟我解釋溝通,如果僅是建索引,建議不需要用Solr或者ElasticSearch;另一個主題是Nube 公司的Sonal Goyal 分享了“Real Time Fuzzy Matching with Spark and Elastic Search”,她只重點說了模糊匹配和Spark的特點,其他分享沒有多少干貨(第二天的分享)。
Spark 1.4 Overview & Spark Committers Q&A
此外,在會議首日晚,Databricks還舉辦了Spark 1.4 Overview & Spark Committers Q&A,其中1.4重點更新如下:

圖4: Databricks的Spark Committers回答用戶問
1. Spark為應用提供了REST API來獲取各種信息,包括jobs、stages、tasks、storage info等。
2. Spark Streaming 增加了UI,可以方便用戶查看各種狀態,另外與Kafka的融合也更加深度,也加強了對Kinesis的支持。
3. Spark SQL(DataFrame)添加ORCFile類型支持,另外還支持所有的Hive metastore。
4. Spark ML/MLlib的ML pipelines愈加成熟,提供了更多的算法和工具。
5. Tungsten項目的持續優化,特別是內存管理、代碼生成、垃圾回收等方面都有很多改進。
6. SparkR發布,更友好的R語法支持。
后,阿里明風的“Dynamic Community Detection for Large-scale e-Commerce data with Spark Streaming and GraphX”,還有Intel黃潔的“Towards Benchmarking Modern Distributed Streaming Systems”同樣非常精彩,建議大家去搜索學習。
在第2日Databricks聯合創始人Reynold Xin(辛湜)的Keynotes中指出,Tungsten項目以大幅度提升Spark應用程序的內存和CPU利用率為目標,旨在大程度上壓榨新時代硬件性能。重點包括如下三方面:
1. 代碼生成(Code generation):使用代碼生成來利用新型編譯器和CPU。
2. Binary Processing:利用應用的語義(Application Semantics)來更明確地管理內存,同時消除JVM對象模型和垃圾回收開銷。
3. Cache-aware computation:使用算法和數據結構來實現內存分級結構(Memory Hierarchy)。
基于AdMaster當下也在重點發力移動端,因此我還重點聽了InMobi公司的LBS實踐(Building a Location Based Social Graph in Spark at InMobi),基本原理是用SSID作為點,把連接頻率做邊,通過使用連通圖算法來實現。
第二天下午,Intel的伊里奇分享了“Taming GC Pauses for Humongous Java Heaps in Spark Graph Computing”:隨著Spark的發展,JVM對大內存的管理也顯得越來越重要,特別是垃圾回收,所以他重點介紹了GC的G1回收策略特點,同時還指出G1在1.8版本要比1.7版本性能要高出20%以上。
從本次峰會來看,業界對Spark已經有了一定的認可,Spark也被許多企業尤其是互聯網企業廣泛應用到商業項目中。同時,國內玩家在Spark上的影響力同樣值得肯定,甚至有參會人員說到感覺這是一場中國人的技術峰會!
鑒于第三天的會議內容是實戰培訓,因此與AdMaster 創始人洪倍走進了Spark護航公司Databricks公司,就Spark應用和合作場景與Databricks的創始人Reynold Xin進行交流,其中有幾點值得一提:
1. Spark與Flink的區別。提到Flink,其大的特點是與Hadoop 有著非常好的兼容,如可以支持原生的HBase的TableMapper和TableReducer,不足是現在只支持老版本的MapRed方法,新版本的MapReduce方法無法得到支持。
2.Cascading的發展方向以及Spark怎么樣兼容Cascading。Cascading是一個架構在Hadoop上的API,用來創建復雜和容錯數據處理工作流。它抽象了集群拓撲結構和配置,旨在快速開發復雜的分布式應用,而不用考慮背后的MapReduce原理。
3.就AdMaster用戶行為的增量統計算法如何通過Spark快速實現并提高效率進行了深入探討, 算法舉例:
在 2013.1.1-2013.11.30 這一時間段,有 U1、U2、U3、U4 這四個用戶,他們每天對廣告的瀏覽情況如下圖所示,數字代表當天的訪問次數。

由上表可知,在這個時間段內,U1 瀏覽廣告共 4 次,次數為 4;U2 瀏覽廣告 2 次,次數為 2;U3 瀏覽廣告共 4 次,次數為 4;U4 瀏覽廣告 1 次,次數為 1。整理后,整個項目的次數分布情況如下圖所示:

這里算法大的復雜度就在于每天需要把以前的全部數據和當天的數據做聯合查詢,而查詢條件又分很多維度。
Reynold后建議我們等7月底推出對join操作進行的版本,屆時測試后再進行更加詳細溝通。
本站文章版權歸原作者及原出處所有 。內容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負責,本站只提供參考并不構成任何投資及應用建議。本站是一個個人學習交流的平臺,網站上部分文章為轉載,并不用于任何商業目的,我們已經盡可能的對作者和來源進行了通告,但是能力有限或疏忽,造成漏登,請及時聯系我們,我們將根據著作權人的要求,立即更正或者刪除有關內容。本站擁有對此聲明的最終解釋權。