Spark 1.6今天發布

jopen 8年前發布 | 26K 次閱讀 Spark

今天,我們很開心的宣布發布Apache Spark 1.6!這也是開源社區開發的一個里程碑,2015年貢獻spark的代碼是1000行,是2014一整年的兩倍,見下圖。

Spark 1.6今天發布

接下來揭開Spark 1.6新發布的功能。

Spark 1.6包含了超過1000個patches,在這里我們主要展示三個方面的主題:新的Dataset API,性能提升(讀取Parquet 50%的性能提升,自動內存管理,streaming state management十倍的性能提升),以及大量新的機器學習和統計分析算法。

性能提升

根據2015年Spark官方調研發現,91%的用戶覺得性能提升是Spark最重要的方面。因此,性能優化是Spark開發一直的關注點。

讀取Parquet性能提升:Parquet是在Spark使用中最常用的數據格式。Parquet讀取性能對海里數據應用有著極其重大的影響。在過去,Spark中讀取Parquet依賴于Parquet的(parquert-mr)MR來讀取并解析Parquet文件。當我們優化Spark程序時,你會發現太多的時間消耗在從Parquet列解析成記錄集的過程中。而在Spark 1.6中我們采用一種新型的Parquet reader讀取器,它可以避開”parquert-mr”式的記錄集解析,并使用更加優化的字節碼路徑來解析Parquet的schemas。在我們的基準測試中可以發現,新型的Parquet reader讀取器讀取Parquet文件有 50%的性能提升(從2.9 million/秒提升到4.5million/秒)。

自動內存管理:Spark 1.6另外一個性能提升是在內存管理方面。在Spark 1.6之前,Spark靜態地把內存劃分成兩部分:execution memory 和 cache memory。Execution memory主要用來做sort,hash和shuff。Cache memory是用來緩存熱點數據的。Spark 1.6引進新的內存管理機制能自動調節這兩種內存的區域,運行時自動增長,回收時根據執行的應用適時進行。

這意味著在無需用戶干預的情況下使用join和aggregation操作時內存的自適應有大幅的提升。

對于讀取Parquet和自動內存管理兩種性能提升也不需要開發者更改老版本的代碼。

streaming state management十倍的性能提升:State management是Spark Streaming應用開發里重要的功能,經常用來保存聚合信息或session信息。通過社區開發者的反饋,我們重新設計了state management API,并引入 mapWithState API (可隨updates的數目線性擴展)。這意味著能更有效的跟蹤增量變化,而不是每次update都要對數據進行一次全scan。我們已經創建了一個 notebook 來展示怎么使用這個new feature,后面會發blog進一步對這個功能進行詳細講解。

Dataset API

在今年早些時候我們引入DataFrame,它可以提供high-level functions讓Spark更好的處理數據結構和計算。這讓 Catalyst optimizerTungsten execution engine 自動加速大數據分析。

發布DataFrame之后我們收到了很多反饋,其中一個主要的是大家反映缺乏編譯時類型安全。為了解決這個問題,我們采用新的Dataset API (DataFrame API的類型擴展)。

Dataset API擴展DataFrame API支持靜態類型和運行已經存在的Scala或Java語言的用戶自定義函數。對比傳統的RDD API,Dataset API提供更好的內存管理,特別是在長任務中有更好的性能提升,請參見 blog

新的數據科學功能

機器學習管道持久化:現在許多機器學習的應用采用Spark的ML pipeline功能來構建機器學習pipelines。老版本中,如果想在外部存儲pipeline,需要用戶自己完成持久化代碼部分。在Spark 1.6中已經提供了對應的function來存儲和重新加載pipelines,并把先前的models應用到新的數據中。

大量新的機器學習和統計分析算法:

這次發布增加了以下算法:

· 無偏估計統計

· 生成分析

· 最小二乘法的歸一化

· 二分k均值聚類算法

· 在線假設檢驗

· LDA算法

· 支持R語言的廣義線性模型的統計

· 公式的交互

· 支持R語言的廣義線性模型的權重

· LIBSVM數據源

· 支持非標準的JSON數據

這篇blog只顯示了這次發布中的主要功能,我們也編譯了一個更詳細的 release notes

來自: http://www.infoq.com/cn/news/2016/01/spark-16-release

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