Apache Spark 1.6公布(新特性介绍)

Apache Spark 1.6公布

****大数据 | 2016-01-06 17:34
今天我们很高兴可以公布Apache Spark 1.6,通过该版本号,Spark在社区开发中达到一个重要的里程碑:Spark源代码贡献者的数据已经超过1000人,而在2014年年末时人数仅仅有500。
Apache Spark 1.6公布(新特性介绍)
那么,Spark 1.6有什么新特性呢?Spark 1.6有逾千个补丁。

在本博文中,我们将重点突出三个基本的开发主题:性能提升、新的DataSet API和数据科学函数的扩展。

性能提升
依据我们2015年Spark调查报告。91%的用户觉得性能是Spark最重要的方面,因此,性能优化是我们进行Spark开发的一个重点。
Parquet性能:Parquet已经成为Spark中最经常使用的数据格式之中的一个,同一时候Parquet扫描性能对很多大型应用程序的影响巨大。在曾经。Spark的Parquet读取器依赖于parquet-mr去读和解码Parquet文件。当我们在编写Spark应用程序时,须要花非常多的时间在“记录装配(record assembly)”上。以使进程可以将Parquet列重建为数据记录。在Spark 1.6中。我们引入了新的Parquet读取器。它绕过parquert-mr的记录装配并使用更优化的代码路径以获取扁平模式(flat
schemas)。

在我们的基准測试其中,通过5列測试发现。该新的读取器扫描吞吐率能够从290万行/秒添加到450万行/秒,性能提升接近50%。

自己主动内存管理:Spark 1.6中还有一方面的性能提升来源于更良好的内存管理,在Spark 1.6之前,Spark静态地将可用内存分为两个区域:运行内存和缓存内存。运行内存为用于排序、hashing和shuffling的区域,而缓存内存为用于缓存热点数据的区域。

Spark 1.6引入一新的内存管理器,它能够自己主动调整不同内存区域的大小。在运行时依据运行程序的须要自己主动地添加或缩减对应内存区域的大小。对很多应用程序来说,它意味着在无需用户手动调整的情况下。在进行join和aggregration等操作时其可用内存将大量添加。

前述的两个性能提升对用户来说是透明的。使用时无需对代码进行改动,而以下的改进是一个新API可以保证更好性能的样例。
流式状态管理10倍性能提升:在流式应用程序其中。状态管理是一项重要的功能,经常常使用于维护aggregation或session信息。通过和很多用户的共同努力,我们对Spark Streaming中的状态管理API进行了又一次设计。引入了一个新的mapWithState API。它能够依据更新的数量而非整个记录数进行线性扩展,也就是说通过跟踪“deltas”而非总是进行全部数据的全量扫描的方式更加高效。

在很多工作负载中,这样的实现方式能够获得一个数量级性能提升。我们创建了一个notebook以说明怎样使用该新特性。不久后我们也将另外撰写对应的博文对这部分内容进行说明。

Dataset API
在今年较早的时候我们引入了DataFrames。它提供高级函数以使Spark可以更好地理解数据结构并运行计算。DataFrame中额外的信息可以使Catalyst optimizer和Tungsten运行引擎(Tungsten execution engine)自己主动加速实际应用场景中的大数据分析。
自从我们公布DataFrames,我们得到了大量反馈,当中缺乏编译时类型安全支持是诸多重要反馈中的一个,为解决这该问题,我们正在引入DataFrame API的类型扩展即Datasets。
Dataset API通过扩展DataFrame API以支持静态类型和用户定义函数以便可以直接执行于现有的Scala和Java类型基础上。通过我们与经典的RDD API间的比較,Dataset具有更好的内存管理和长任务执行性能。
请參考Spark Datasets入门这篇博文。
新数据科学函数
机器学习流水线持久化:很多机器学习应用利用Spark ML流水线特性构建学习流水线,在过去,假设程序想将流水线持久化到外部存储,须要用户自己实现相应的持久化代码,而在Spark 1.6其中,流水线API提供了相应的函数用于保存和又一次载入前一状态的流水线,然后将前面构建的模型应用到后面新的数据上。比如,用户通过夜间作业训练了一个流水线。然后在生产作业中将其应用于生产数据。
新的算法和能力:本版本号同一时候也添加了机器学习算法的范围,包含:
单变量和双变量统计
存活分析
最小二乘法标准方程
平分K均值聚类
联机如果检验
ML流水线中的隐含狄利克雷分布(Latent Dirichlet Allocation。LDA)
广义线性模型(General Liner Model,GLM)类R统计
R公式中的特征交互
GLM实例权重
DataFrames中的单变量和双变量统计
LIBSVM数据源
非标准JSON数据
本博文仅仅给出了本公布版本号中的主要特性。我们也编译了一个更具体的发行说明集并附有可执行的样例。
在接下来的几周内,我们将陆续推出对这些新特性进行更具体说明的博文。请继承关注Databricks博客以便了解很多其它关于Spark 1.6的内容。

假设你想试用这些新特性,Databricks能够让你在保留老版本号Spark的同一时候使用Spark 1.6。注冊以获取免费试用帐号。

若没有1000个源代码贡献者,Spark如今不可能如此成功,我们也趁此机会对全部为Spark贡献过力量的人表示感谢。
译者/牛亚真 审校/朱正贵 责编/仲浩
译者介绍:牛亚真。中科院计算机信息处理专业硕士研究生,关注大数据技术和数据挖掘方向。

原网页已由QQ浏览器云转码

上一篇:3Sum algorithm - 非常容易理解的实现 (java)


下一篇:安装GeoIP数据库