Apache Spark分布式數據處理架構即將進行升級。
2016年在紐約舉辦的Spark峰會上,Spark 2.0版本的詳細信息已透露,其中提到下一版本將包含Spark流處理模塊的改進升級和流處理模塊的技術方案。
數據流處理技術已經得到業界越來越多青睞,隨著更大量的Web數據和移動數據進入組織,越來越多的應用在將關注點轉移到了處理動態大數據。
Spark 2.0還包括一些API合并和Spark內核系統的性能提升。另外還更新了SQL查詢功能和機器學習API。
不過,其中流處理方面的升級特別重要,因為它采用了基于稱為Lambda架構的分布式處理。在Lambda架構中,離線批處理管道可以實時處理管道協作實現數據分析。
Seshu Adunuthula是美國加州eBay公司基礎設施分析負責人,他說:“分析師們不想等待24小時或者48小時甚至更久才能得到數據集。你可以看一下人們現在構建的新平臺,比如Ubers和Spotifys,它們用的根本不是傳統的批量管道處理方式。”
他說,eBay公司的抽取、轉換和加載(ETL)任務獲益于Spark核心引擎。Adunuthula說他期望研究Spark流處理的新特性,與Google流數據處理(眾所周知的Dataflow)比較選擇。eBay公司已經利用Apache Storm做了一些數據流處理。Apache Storm是一款Hadoop 2.0組件,Spark出來以后迅速把它超越了。
與Adunuthula想法類似,Synchronoss公司的大數據分析高級總監Suren Nathan表示,他把數據流處理和Lambda架構看作是下一代分析開發的核心。他監管的工作目前關注Spark1.6,他的團隊對Spark流處理的應用還在實驗室階段,但是預計在今年晚些時候會進入產品環境。他的團隊會密切關注Spark流處理的更新。
Nathan說:“流處理是未來發展的方向,人們希望縮短操作時間。以前獲得結果一般需要‘下周’或者‘明天’,現在已經可以‘馬上’獲取了。”
Spark 2.0亮點有哪些目前主流Hadoop分布式提供商都已經把Spark加入他們的核心產品組成了,Spark作為針對MapReduce的替代品獲得了很多關注。(MapReduce是Hadoop原生大數據分析數據處理引擎)。這種勢頭在去年底得到了爆發,因為IBM公司表示將在大范圍分析產品中使用Spark。
促使Spark流行的因素包括:分析處理的速度,機器學習庫,SQL支持和流處理,所有這些方面在下一版升級中都將涉及到。
Matei Zaharia是峰會發起方美國舊金山的Databricks公司CTO,他把Spark作為學術工作的一部分引入了加州大學伯克利分校。他認為,Spark 2.0借鑒了前兩年的經驗教訓。盡管一些新創公司和傳統供應商都表示支持Spark,但Databricks開發人員(例如Zaharia)仍然是緊跟開源Apache Spark的主要推動者。
Spark2.0版本預計將于2016年四五月份發布,Zaharia說,其中Spark SQL引擎的高級API將使實時性事件開發更容易。他把整體方法稱為“結構化流處理”,這一概念表示它設計之時就考慮同時支持批處理和實時處理兩種方式。本次發布是2.0版本的第一次發布,這一版本中流處理將關注使用ETL任務的應用,并將配合Spark目前的機器學習API。
即將支持更多并行處理Peter Crossley是Webtrends公司的產品架構總監,他非常期待Spark流處理能力的改進。在Webtrends公司,開源Spark軟件已經用于Web數據分析,該公司大數據集群中每個季度會增長超過500TB的數據,這正是數據流處理的用武之地。
Crossley指出,Spark流處理架構的內核仍然是面向批量處理的,盡管是微批量模式。現在,數據架構師使用Spark流處理定義了數據窗口概念,所以同一時間只會處理到達數據的一個子集。按數據流子集處理是非常困難的,Crossley期待Spark的版本升級在這方面可以有顯著改善。
他說:“我們必須向前看。有了下一代Spark,我們將看到更多并行處理特性。”下一版本Spark流處理將開始提供接入數據的視圖,將比現在的配置更直接。
流處理不只是批處理與其他人看法類似,Crossley表示所謂的Lambda時代可能要給實時處理讓路了,實時處理比批處理更普遍。他說:“我們將來會逐漸不再需要批處理了。”
Tony Baer是倫敦Ovum首席分析師,他說:“Spark 2.0有許多有趣的特性。結構化流處理當然是其中之一。即將發布的版本更將確立Spark把批處理與實時處理作為計算引擎的地位。”
Baer說,2.0版本還有一些增強套件也促進了Spark的領先地位。Tungsten是一款分析引擎,重寫了代碼生成幫助處理CPU瓶頸。同時,其它一些新興技術也推動了業界選擇分析軟件向開源分析包的傾向。比如Arrow就提供了內存數據跨不同系統持久化功能,Alluxio(前身是Tachyon)的目標是創建通用內存列數據格式。