Spark 0.7.0 版本发布

Spark 团队很荣幸发布 0.7.0 版本,这是一个新的主要版本,带来了几个新功能。最值得注意的是 Spark 的 Python APISpark Streaming 的 alpha 版本。(有关 Spark Streaming 的详细信息,也可以在此 技术报告 中找到。)此版本还在各个方面进行了许多其他改进。总的来说,这是我们迄今为止最大的版本,有 31 位贡献者,其中 20 位来自伯克利以外。

您可以下载 Spark 0.7.0,既可以作为 源代码包(4 MB tar.gz),也可以作为 预构建包(60 MB tar.gz)。

Python API

Spark 0.7 添加了一个名为 PySpark 的 Python API,它可以使用 Python 从 Spark 中使用 Spark,无论是在独立程序中还是在交互式 Python Shell 中。它使用标准的 CPython 运行时,因此您的程序可以调用 NumPy 和 SciPy 等本机库。与 Scala 和 Java API 一样,PySpark 会自动将主程序中的函数以及它们依赖的变量运送到集群。PySpark 支持大多数 Spark 功能,包括 RDD、累加器、广播变量以及 HDFS 输入和输出。

Spark Streaming Alpha

Spark Streaming 是 Spark 的一个新扩展,它增加了近实时处理能力。它提供了一个简单而高级的 API,用户可以使用并行操作(例如)转换流map, filter, reduce和新的滑动窗口函数。它自动将工作分配到集群上,并提供高效的故障恢复,为转换提供完全一次语义,而无需依赖于与外部系统的昂贵事务。有关 Spark Streaming 的更多详细信息,请参见 这些幻灯片我们的技术报告。此版本是我们 Spark Streaming 的第一个 alpha 版本,其中实现了大部分功能,并且 API 采用 Java 和 Scala。

内存仪表板

Spark 作业现在启动一个 Web 仪表板,用于监控程序中每个分布式数据集 (RDD) 的内存使用情况。在您的日志中查找如下所示的行

15:08:44 INFO BlockManagerUI: Started BlockManager web UI at http://mbk.local:63814

您还可以通过spark.ui.port属性控制要使用的端口。

Maven 构建

除了 SBT 之外,现在还可以使用 Maven 构建 Spark。 Maven 构建可以使用 Maven 配置文件(-Phadoop1-Phadoop2)轻松选择 Hadoop 版本,以及使用以下命令进行 Debian 打包,从而更轻松地发布到您选择的存储库:mvn -Phadoop1,deb install.

新操作

此版本添加了几个 RDD 转换,包括keys, values, keyBy, subtract, coalesce, zip。它还添加了SparkContext.hadoopConfiguration允许程序在操作之间全局配置 Hadoop 输入/输出设置。最后,它添加了RDD.toDebugString()方法,该方法可用于打印 RDD 的谱系图以进行故障排除。

EC2 改进

  • Spark 现在将从以下位置读取 S3 凭据:AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY环境变量(如果已设置),从而更容易访问 Amazon S3。
  • 此版本修复了一个 S3 访问的错误,该错误会导致流在未完全读取时保持打开状态(例如,当调用RDD.first()或带有限制的 SQL 查询时),从而导致节点挂起。
  • EC2 脚本现在同时支持独立集群和 Mesos 集群,并在集群上启动 Ganglia。
  • Spark EC2 集群现在可以分布在多个可用区中。

其他改进

  • groupByKeyreduceByKey这样的 Shuffle 操作现在尝试从父 RDD 的大小推断并行度(除非spark.default.parallelism已设置)。
  • 对 shuffle 的多项性能改进。
  • 独立部署集群现在默认将作业分散到各个机器上,从而提高数据本地性。
  • 当由于资源不足而未启动作业时,改进的错误报告。
  • 独立部署 Web UI 现在包括用于查询集群状态的 JSON 端点。
  • 对 IBM JVM 的更好支持。
  • 默认的 Hadoop 版本依赖项已更新到 1.0.4。
  • 改进的故障处理和错误消息报告。
  • 独立集群守护程序和用户应用程序的单独配置。
  • 对调度程序代码库进行重大重构,以实现更丰富的单元测试。
  • 整个过程中的几个错误和性能修复。

兼容性

此版本与 Spark 0.6 程序 API 兼容,但以下功能略有变化:

  • 在您未指定并行度级别的情况下,并行 shuffle 操作使用父 RDD 的分区数,而不是常量默认值。但是,如果您设置spark.default.parallelism,它们将使用它。
  • SparkContext.addFile,它将文件分发到工作节点,不再保证将其放在执行程序的正在运行的目录中,而是可以使用SparkFiles.getRootDirectory查找它使用的目录,或者使用SparkFiles.get获取特定文件。这样做是为了避免在本地模式下运行时弄乱本地目录。

鸣谢

Spark 0.7 是伯克利内外的许多贡献者的工作,总共有 31 位不同的贡献者,其中 20 位来自伯克利以外。以下是做出贡献的人员以及他们工作的领域:

  • Mikhail Bautin -- Maven 构建
  • Denny Britz -- 内存仪表板、流式处理、错误修复
  • Paul Cavallaro -- 错误报告
  • Tathagata Das -- 流式处理(首席开发人员)、24/7 运营、错误修复、文档
  • Thomas Dudziak -- Maven 构建、Hadoop 2 支持
  • Harvey Feng -- 错误修复
  • Stephen Haberman -- 新的 RDD 操作、配置、S3 改进、代码清理、错误修复
  • Tyson Hamilton -- JSON 状态端点
  • Mark Hamstra -- API 改进、文档
  • Michael Heuer -- 文档
  • Shane Huang -- shuffle 性能修复
  • Andy Konwinski -- 文档
  • Ryan LeCompte -- 流式处理
  • Haoyuan Li -- 流式处理
  • Richard McKinley -- 构建
  • Sean McNamara -- 流式处理
  • Lee Moon Soo -- 错误修复
  • Fernand Pajot -- 错误修复
  • Nick Pentreath -- Python API、示例
  • Andrew Psaltis -- 错误修复
  • Imran Rashid -- 内存仪表板、错误修复
  • Charles Reiss -- 故障恢复修复、代码清理、可测试性、错误报告
  • Josh Rosen -- Python API(首席开发人员)、EC2 脚本、错误修复
  • Peter Sankauskas -- EC2 脚本
  • Prashant Sharma -- 流式处理
  • Shivaram Venkataraman -- EC2 脚本、优化
  • Patrick Wendell -- 流式处理、错误修复、示例、文档
  • Reynold Xin -- 优化、UI
  • Haitao Yao -- 运行脚本
  • Matei Zaharia -- 流式处理、故障恢复、Python API、代码清理、错误修复、文档
  • Eric Zhang -- 示例

感谢每一位贡献者!


Spark 新闻存档

最新消息

存档