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。 这一层提供了 Spark 的所有功能,包括并行转换、分布式数据集、广播变量和累加器,以一种 Java 友好的方式。
扩展的文档
Spark 的 文档已经扩展,包含新的 快速入门指南、额外的部署说明、配置指南、调整指南和改进的 Scaladoc API 文档。
引擎变更
在幕后,Spark 0.6 具有来自即将发布的 Spark Streaming 项目的新的自定义存储和通信层。 这些可以将性能提高到过去版本的 2 倍。 具体来说:
- 一种使用异步 Java NIO 的新通信管理器可以让 shuffle 操作运行得更快,尤其是在发送大量数据或作业有许多任务时。
- 一种新的存储管理器支持每个数据集的存储级别设置(例如,是否将数据集保存在内存中、反序列化、在磁盘上等,甚至在节点之间复制)。
- Spark 的调度器和控制平面已经过优化,以更好地支持超低延迟作业(低于 500 毫秒)和高吞吐量调度决策。
新 API
- 此版本添加了控制每个 RDD 上的缓存策略的功能,以便可以将不同的 RDD 存储在内存中、磁盘上、作为序列化字节等。 您可以使用 RDD 上的 persist() 方法选择您的存储级别。
- 一个新的 Accumulable 类推广了 Accumulators,用于累积的类型与添加的元素类型不同时的情况(例如,您希望通过添加单个元素来累积集合,例如 Set)。
- 您现在可以动态添加应该随 SparkContext.addFile/Jar 运送到您的 worker 的文件或 JAR。SparkContext.addFile/Jar.
- 更多 Spark 运算符(例如,joins)支持自定义分区器。
增强的调试
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 贡献了对 shuffle 操作的改进。
- Shivaram Venkataraman 改进了 Spark 的内存估计并编写了内存调整指南。
- Ravi Pandya 贡献了适用于 Windows 的 Spark 运行脚本。
- Mosharaf Chowdhury 提供了几个广播修复。
- Henry Milner 指出了抽样算法中的几个错误。
- Ray Racine 提供了对 EC2 脚本的改进。
- Paul Ruan 和 Bill Zhao 帮助进行了测试。
还要感谢所有认真提出功能建议或报告错误的 Spark 用户。
Spark 新闻存档