熱線電話:13121318867

登錄
首頁精彩閱讀Spark 2015年回顧:四個大版本更迭、數以百計的改進
Spark 2015年回顧:四個大版本更迭、數以百計的改進
2016-02-01
收藏

原文 | Spark 2015 Year In Review

翻譯 | 牛亞真

來自 | CSDN

 

Apache Spark在2015年得到迅猛發展,開發節奏比以前任何時候都快,在過去一年的時間里,發布了4個版本(Spark 1.3到Spark 1.6),各版本都添加了數以百計的改進。

 

給Spark貢獻過源碼的開發者數量已經超過1000,是2014年年末人數的兩倍。據我們了解,不管是大數據或小數據工具方面,Spark目前是開源項目中最活躍的。對Spark的快速成長及社區對Spark項目的重視讓我們深感責任重大。

 

在Databricks,我們仍然在努力推動Spark向前發展,事實上,2015年我們貢獻給Spark的代碼量是其它任何公司的10倍之多。在本博文中,將重點突出2015年加入到項目中的主要開發內容。

 

1.數據科學API,包括DataFrames,機器學習流水線(Machine Learning Pipelines)及R語言支持;

 

2.平臺API;

 

3.Tungsten項目和性能優化;

 

4.Spark流計算。

 

在見證快速開發節奏的同時,也很高興目睹了用戶采用新版本的速度。例如,下圖給出的是超過200個客戶在Databricks運行Spark版本的情況(注意單個客戶同時可以運行多個版本的Spark)。

 

 

從上圖中可以看到,Spark用戶在緊隨最新版本方面積極性很高,在Spark 1.5發布后的僅三個月內,大多數的客戶便在使用它,同時有一小部分客戶已經在試用2015年11月底發布的預覽版本的Spark 1.6?,F在,讓我們來詳細說明2015年Spark的主要變化:

 

數據科學API: DataFrame,ML Pipelins和R

 

在Spark之前,大數據相關讀物總是會涉及一系列令人望而生畏的概念,從分布式計算到MapReduce函數式編程。從而,大數據工具主要由那些掌握高級復雜技術水平的數據基礎團隊使用。

 

Spark在2015年首要發展主題是為大數據構建簡化的APIs,類似于為數據科學構建的那樣。我們并非逼迫數據科學家去學習整個新的發展范式,實際上是想要降低學習曲線,提供類似于他們已經熟悉的工具。

 

為了達此目的,下面介紹下Spark的三個主要API附件。

 

DataFrames:針對結構化的數據,是一個易用并且高效的API,類似于小數據工具,像Python中的R和Pandas。

Machine Learning Pipelines:針對完整的機器學習工作流,是一個易用的API。

SparkR:與Python一起,R是深受數據科學家歡迎的編程語言。只需簡單的學習一下,數據科學家馬上就可以使用R和Spark處理數據,比他們的單一機器處理數據強大的多。

雖然這些API僅僅發布了數月,根據2015年Spark調查報道,使用DataFrame API的Spark用戶已占62%。正如調查結果所示,調查對象大部分人都把自己定位為數據工程師(41%)或數據科學家(22%),數據科學家對Spark興趣的上升通過其使用的開發語言能更明顯地說明問題,58%的調查對象使用Python(相比2014年增幅超過49%),18%的受訪者使用R API。

 

由于我們發布了DataFrames,因此也收集了社區的反饋,其中最為重要的反饋是:對于構建更大型、更復雜的數據工程項目,經典RDD API所提供的類型安全特性十分有用?;诖朔答?,針對這些不同種類的數據,我們正在Spark 1.6中開發一個新類型Dataset API。

 

平臺APIs

 

對應用開發者來說,Spark正成為通用的運行時環境。應用程序僅需要針對單個集合的API進行編程便可以運行在不同種類的環境上(on-prem、cloud、Hadoop等)及連接不同種類的數據源。在本年年初,我們便為第三方開發人員引入了標準的可插拔數據源API,它可以智能地解析數據源格式。目前支持的數據源包括:

CSV, JSON, XML

Avro, Parquet

MySQL, PostgreSQL, Oracle, Redshift

Cassandra, MongoDB, ElasticSearch

Salesforce, Google Spreadsheets

 

 

為便于查找數據源和算法對應的庫,我們也引入了Spark核心存儲庫spark-packages.org。

 

另外一個有趣的趨勢是Spark早期使用者大多數與Hadoop結合起來使用,隨著Spark的發展我,Hadoop不再代表著大多數Spark使用時。根據2015年Spark調查報告,48%的Spark部署方式為Spark standalone集群管理器,而Hadoop Yarn的使用僅為40%左右。

 

Tungsten項目和性能優化

 

根據2015年Spark調查報告,91%用戶認為性能是Spark最重要的特征,因此,性能優化始終是Spark開發中的一個重要內容。

 

在今年年初,我們啟動了Tungsten項目——被設計用于提高Spark內核架構的性能和健壯性的重要改進。Spark 1.5中已經提供了Tungsten的初步功能,這其中包括二進制處理(binary processing),它避免使用Java對象模型那種傳統二進制內存布局格式。二進制處理極大地降低了數據密集型任務處理時的垃圾回收壓力,除此之外,Tungsten還包括新的代碼生成框架,在運行時對用戶代碼中的表達式計算生成相應經過優化的字節碼。2015年發布的四個Spark版本,我們也添加了大量能夠經過代碼生成的內置函數,例如日期和字符串處理等常見任務。

 

另外,數據處理性能在查詢執行時也非常重要,Parquet已經成為Spark中最常用的數據格式,其掃描性能對許多大型應用程序的影響巨大,在Spark 1.6當中,我們引入了一種新的Parquet讀取器,該讀取器針對平滑模式(flat schemas)使用一種經過優化的代碼路徑,在我們的基準測試當中,該新的讀取器掃描吞吐率增加了近50%。

 

Spark流處理

 

隨著物聯網的崛起,越來越多的機構正在部署各自的流處理應用程序,將這些流處理程序同傳統的流水線結合起來至關重要,Spark通過利用統一引擎進行批處理和流數據處理簡化了部署難度。2015年Spark 流處理中增加的主要內容包括:

 

直接Kafka連接器:Spark 1.3 改進了與Kafka間的集成,從而使得流處理程序能夠提供只執行一次數據處理的語義并簡化操作。額外的工作提供了容錯性和保證零數據丟失。

 

Web UI進行監控并幫助更好地調試應用程序:為幫助監控和調試能夠7*24小時不間斷運行的流處理程序,Spark 1.4 引入了能夠顯示處理時間線和直方圖的新Web UI,同時也能夠詳細描述各離散Streams

 

狀態管理10倍提升。在Spark 1.6當中,我們重新設計了Spark流處理中的狀態管理API,新引入mapWithState API,它能夠線性地擴展更新的記錄數而非記錄總數。在大多數應用場景中能夠達到一個數量級的性能提升。

 

結束語

 

Databricks目前在Spark用戶培訓和教育方面投入巨大,在2015年,我們與加州大學伯克利分校、加州大學洛杉磯分校合作并提供兩個大規模在線開放課程。第一個課程是Apache Spark大數據處理入門,教授學生使用Spark和數據分析;第二個課程是可擴展的機器學習,教授學生使用Spark進行機器學習。這兩門課程在edX平臺上都是免費的,在我們發布此消息后,目前已經有超過125000個學生注冊,我們計算在今年完成對他們的培訓。

 

我們對今年與社區的共同努力所帶來的進步感到自豪,也為能夠繼承努力給Spark帶來更豐富的特性感到激動,想了解2016年的開發內容,請繼續保持對我們博客的關注。

 

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢