本届Spark Summit Europe将于今年十月在阿姆斯特丹举行。查看完整议程与购票操作。 今天我们很高兴地宣布Apache Spark1.5版本发布。我们在本文中将概述Spark 1.5中的几个主要开发主题与一些令人期待的新功能特性。在接下来的几周内,我们的博客也将会更详细介绍Spark 1.5中的特定组件。当然你也可以在接下来要介绍的Apache版本说明中,简要了解Spark 1.5的新特性列表。 Spark 1.5的大部分重大改动位于底层,从而更好地提升Spark的性能、可用性以及操作稳定性。Tungsten项目是Spark 1.5中涉及的主要部分,其优化了若干低层次的架构,进而提升Spark的整体性能。同样,这个版本也增加了流组件的相关特性,例如我们增加了大家期待的backpressure机制。此次发布中还有一大主题便是数据科学:Spark 1.5中囊括了大量新的机器学习算法与工具,并且扩展了Spark中关于R语言的API。 在Spark 1.5中还有个有趣的花絮就是我们跳过了标记为10000的这个JIRA号(即超过10000次请求功能或者报告错误的提交)。希望这不会过多减缓我们的开发进度。 性能提升与Tungsten项目今年早期我们宣布的Tungsten项目-该项目是自Spark诞生以来内核级别最大的改动,旨在提高其性能与健壮性。目前在Spark 1.5中已经完成Tungsten项目的第一个主要部分。这部分主要包括的是二值化处理(binary processing),运用自定义的二进制内存布局来规避JVM对象模型。二值化处理显著降低了数据密集型工作负载时垃圾回收的开销。它还包括一个新的代码生成(code generation)框架,在该框架内用户代码运行时会产生用于求值表达式的优化字节指令。Spark 1.5中还为常见任务(例如日期处理、字符串处理等)增加了大量的内置函数。 未来几周,我们还将持续进行Tungsten项目的开发。作为展示,下图罗列了配置相同情况下分别在Spark 1.4与Spark 1.5运行不同规模聚合查询时的耗时对比。 该版本也还包括其他性能方面的增强。对Apache Parquet文件格式方面的支持,通过默认开启谓词下推(predicate push)以及更快地元数据查询路径,进而加强了其输入/输出的性能。对于Spark中的join操作同样进行了修改,带来了一种新的broadcast outer join操作,该操作可以对外连接进行排序合并。 可用性和互操作性Spark 1.5还侧重于实用性方面,例如提供了与多种环境互操作的特性。毕竟,当连接你的数据源或者使用你的cluster时,你只能使用Spark系统。。所以当你调试Spark程序时候,程序的易读性是十分必要的。 Spark 1.5在web UI中增加了关于SQL与DataFrame的可视化查询计划,从而可以动态更新相关指标,例如关于filer操作的分离度、连接与聚合操作时内存使用情况等。下面是一个关于Web UI中计划可视化的一个实例(点击图片查看详情)。 此外,我们已经投入大量的工作去提高Spark与其他生态系统项目的互操作性。例如,通过使用类加载隔离技术,Spark(SQL和DataFrame)的单个实例现在可以连接到Hive 0.12到Hive 1.2.1等多种版本的Hive 库表。除了能够连接到不同的库表之外,Spark现在还能读取其他系统生成的多种Parquet衍生文件,其中包括parquet-avro、parquet-thrift、parquet-protobuf、Impala、Hive。Spark是全球截至目前我们所知道的唯一一个能连接到各种版本Hive且能够支持多种Parquet格式的系统。 Spark Streaming相关操作工具在此版本中关于Spark Streaming也添加了一系列新功能,其重点在于为需要长时间运行的流工作提供业务稳定性。正是因为流处理用户的热情反馈,我们才能更好地去新增以及完善这些功能。在Spark 1.5中增加了backpressure机制,所谓的backpressure机制即为当系统处于不稳定状态时、系统会通过节流方式来控制接受数据。例如,当出现输入源数据量呈爆炸性增长时或者在输出时遇到临时延迟的情况下,系统将动态地调整并确保该流程序保持稳定。此功能是由Databricks与Typesafe的工程师们共同开发而成的。 此外,新版本中增加了集群的负载均衡与调度数据接收器的能力,并且能够在长期运行的作业中更好地控制重新启动接收器。在此版本中Spark Streaming还增加了几个Python API,其中包括了Amazon Kinesis、Apache Flume以及MQTT 协议。 数据科学API之扩展在2015年,Spark研究的主要致力于加强大规模数据科学研究。其中主要包括这三大方面:DataFrame、机器学习流水线、R语言支持。这三个部分所新增的API均有效的运行在Spark环境中。在Spark 1.5中,我们已经极大地扩展了这三个方面的能力。 自DataFrame在Spark 1.3中被首次发布之后,我们收到最常见的用户请求之一便是希望DataFrame能支持快速调用更多的字符串和日期/时间函数。于此我们很高兴地宣布,Spark 1.5中引入了超过100个内置函数,这些函数能够使得用户在Spark上的操作更为便利。几乎所有的内置函数均实现了代码生成,因此在Tungsten项目中可以通过使用这些函数更方便地做改动。 在Spark 1.4版本中R语言的支持是作为alpha组件进行介绍的。如今在Spark 1.5中我们提高了R语言的可用性,通过与MLlib的集成进而完成对可扩展机器学习的支持。SparkR前端支持公式定义广义线性模型、伯努利/高斯分布、弹性网络正则化。 对于机器学习,Spark 1.5在运用了新管道模型和运算法则的情况下。为新API管道提供个更好的覆盖。新管道的特征包括包括 CountVectorizer功能变压器、DCT、MinMaxScaler、 NGram、PCA、RFormula、StopWordsRemover、VectorSlicer,运算法则包括多层感知机、加强后的决策树模型、k-means聚类、朴素贝叶斯,优化工具包括训练集-验证集分割、多类分类评估。此外还新增了包括频繁项挖掘算法PrefixSpan、关联规则生成、Kolmogorov-Smirnov检验等。 Spark Package生态系统的发展Spark 1.5的发布很好地说明了Spark Package生态系统的发展。如今,Spark提供了超过100个package,我们只需通过简单的标记便可启动Spark程序。这些package囊括了机器学习算法、数据源集成、测试工具等。许多package随着Spark 1.5的发布也进行了更新,其中就有spark-csv、 spark-redshift 与 spark-avro这些数据源连接器。 Spark 1.5.0是超过230个开发者努力完成的成果。诚挚感谢每一位开发者的帮助!想要了解更多关于Spark 1.5的特性与即将发布的功能,敬请关注Databricks博客。 为了您阅读的方便,我们将在下文罗列关于Spark 1.5的全部发行说明。如果您想尝试这些新特性的话,那么您可以在我们Databricks网站中找到相关资源。请先注册一个账号进行免费试用 Apache Spark 1.5 发布说明APIs:RDD、DataFrame和SQL
后端执行:DataFrame和SQL
集成:数据源、Hive、Hadoop、Mesos和集群管理
SPARK-4352:在YARN模式中根据preferred locations(首选位置)进行动态资源分配。
SPARK-4751:支持动态资源分配。
R语言
Spark Streaming
不支持项、删除项、配置、行为改变Spark Core
Spark SQL & DataFrames
Spark Streaming
MLlib在spark.mllib包中,并没有重大改动,但有些行为上的变动:
在目前处于实验阶段的spark.ml包中,有一个API的修改和一个行为的修改:
存在问题在版本1.5.0中还存在如下问题,我们将在1.5.1中进行修复。 SQL/DataFrame
Streaming
鸣谢我们非常感谢以下公司为测试候选版本所做的工作,他们分别是: Tencent、 Mesosphere、 Typesafe、 Palantir、 Cloudera、 Hortonworks、 Huawei、 Shopify、 Netflix、 Intel、 Yahoo、 Kixer、 UC Berkeley 与Databricks。 最后还要感谢以下这些人员的贡献,没有他们的努力,也就没有这次新版本的发布,他们分别是: Aaron Davidson、 Adam Roberts、 Ai He、 Akshat Aranya、 Alex Shkurenko、 Alex Slusarenko 、Alexander Ulanov、 Zoltan Zvara等以及一些不知名的贡献者(欢迎您们将你们在git中的姓名邮件给我们,我们将会让更多人知道你们为新版本所做的努力)。 你可以在这个网址下载该版本:http://spark.apache.org/downloads.html 原文链接:Announcing Spark 1.5(译者/丘志鹏 审校/王苇棋、朱正贵、李子健 责编/周建丁) 译者简介:邱志鹏,关注大数据、机器学习。 |