Spark 0.6.0 版本发布

Spark 0.6.0 是一个重要版本,带来了多项新功能、架构改进和性能提升。最显著的增加是独立的部署模式、Java API 和扩展的文档;但在底层也有许多其他更改,这些更改在某些情况下将性能提高了多达2倍。

您可以将此版本下载为源代码包 (2 MB tar.gz) 或预构建包 (48 MB tar.gz)

更简单的部署

除了在 Mesos 上运行,Spark 现在还有一种独立部署模式,让您无需安装外部集群管理器即可快速启动集群。独立模式只需要每台机器上安装 Java,并部署 Spark。

此外,还有在 YARN (Hadoop NextGen) 上运行的实验性支持,目前在单独的分支中。

Java API

Java 程序员现在可以通过新的Java API 层使用 Spark。此层以 Java 友好的方式提供了 Spark 的所有功能,包括并行转换、分布式数据集、广播变量和累加器。

扩展的文档

Spark 的文档已扩展,增加了新的快速入门指南、额外的部署说明、配置指南、调优指南以及改进的Scaladoc API 文档。

引擎变更

在底层,Spark 0.6 采用了即将推出的Spark Streaming 项目中引入的新的自定义存储和通信层。这些可以使性能比以前的版本提高多达2倍。具体来说:

  • 使用异步 Java NIO 的新通信管理器使混洗操作运行更快,尤其是在发送大量数据或作业具有许多任务时。
  • 新的存储管理器支持按数据集的存储级别设置(例如,是否将数据集保存在内存中、反序列化、在磁盘上等,甚至跨节点复制)。
  • Spark 的调度器和控制平面已经过优化,以更好地支持超低延迟作业(低于 500 毫秒)和高吞吐量调度决策。

新 API

  • 此版本增加了在每个 RDD 级别控制缓存策略的能力,以便不同的 RDD 可以存储在内存中、磁盘上、作为序列化字节等。您可以使用 RDD 上的persist() 方法选择您的存储级别。
  • 一个新的 Accumulable 类概括了累加器,适用于被累加的类型与被添加元素的类型不同的情况(例如,您希望通过添加单个元素来累加集合,例如 Set)。
  • 您现在可以使用以下命令动态添加应分发给工作节点的

    或 JAR:SparkContext.addFile/Jar.

  • 更多 Spark 算子(例如连接)支持自定义分区器。

增强的调试功能

Spark 的日志现在会打印日志中描述的每个 RDD 和作业属于程序中的哪个操作,从而更容易将问题追溯到代码的哪个部分。

Maven Artifacts

Spark 现在可在 Maven Central 中使用,使其更容易链接到您的程序中,而无需将其构建为 JAR。使用以下 Maven 标识符将其添加到项目中:

  • groupId: org.spark-project
  • artifactId: spark-core_2.9.2
  • version: 0.6.0

兼容性

此版本与 Spark 0.5 程序源代码兼容,但您需要针对 0.6 重新编译它们。此外,缓存的配置已更改:不再有spark.cache.class参数来为所有 RDD 设置一个缓存策略,您现在可以设置每个 RDD 的存储级别。如果您尝试设置该参数,Spark 将发出警告。spark.cache.class.

鸣谢

Spark 0.6 是伯克利和外部的许多新贡献者共同努力的成果。

  • Tathagata Das 贡献了新的通信层和部分存储层。
  • Haoyuan Li 贡献了新的存储管理器。
  • Denny Britz 贡献了 YARN 部署模式、独立模式的关键方面以及其他几项功能。
  • Andy Konwinski 贡献了改版后的文档网站、Maven 发布和几份 API 文档。
  • Josh Rosen 贡献了 Java API 和多项错误修复。
  • Patrick Wendell 贡献了增强的调试功能,并协助测试和文档工作。
  • Reynold Xin 贡献了许多错误和性能修复。
  • Imran Rashid 贡献了新的 Accumulable 类。
  • Harvey Feng 贡献了对混洗操作的改进。
  • Shivaram Venkataraman 改进了 Spark 的内存估算,并编写了内存调优指南。
  • Ravi Pandya 贡献了 Spark 在 Windows 上的运行脚本。
  • Mosharaf Chowdhury 为广播提供了多项修复。
  • Henry Milner 指出了采样算法中的多项错误。
  • Ray Racine 改进了 EC2 脚本。
  • Paul Ruan 和 Bill Zhao 协助测试。

还要感谢所有认真提出功能建议或报告错误的 Spark 用户。


Spark 新闻存档