Spark 0.8.0 版本发布

Apache Spark 0.8.0 是一个主要版本,包含许多新功能和可用性改进。 这也是我们在 Apache 孵化器中的第一个版本。 这是迄今为止最大的 Spark 版本,来自 67 位开发者和 24 家公司的贡献。

您可以下载 Spark 0.8.0,可以是 源代码包(4 MB tar.gz),也可以是为 Hadoop 1 / CDH3CDH4 预构建的包 (125 MB tar.gz)。 发布签名和校验和可在官方 Apache 下载站点上找到。

监控 UI 和指标

Spark 现在在 Web UI 中显示各种监控数据(默认情况下在驱动程序节点上的端口 4040)。 新的作业仪表板包含有关正在运行、已成功和失败的作业的信息,包括涵盖任务运行时、混洗数据和垃圾回收的百分位数统计信息。 现有的存储仪表板已扩展,并添加了其他页面以显示每个执行程序的总存储和任务信息。 最后,新的指标库通过各种 API(包括 JMX 和 Ganglia)公开内部 Spark 指标。

机器学习库

此版本引入了 MLlib,这是一个用于 Spark 的高质量机器学习和优化算法的标准库。 MLlib 是与 UC Berkeley MLbase 项目合作开发的。 当前的库包含七种算法,包括支持向量机 (SVM)、逻辑回归、线性回归的几种正则化变体、聚类算法 (KMeans) 和交替最小二乘协同过滤。

Python 改进

Python API 已扩展了许多以前缺失的功能。 这包括支持不同的存储级别、采样和各种缺失的 RDD 运算符。 我们还添加了对在 IPython(包括 IPython Notebook)中运行 Spark 以及在 Windows 上运行 PySpark 的支持。

Hadoop YARN 支持

Spark 0.8 增加了对在 YARN 集群上运行独立 Spark 作业的极大改进的支持。 YARN 支持不再是实验性的,而是现在是主线 Spark 的一部分。 还添加了对针对安全的 YARN 集群运行的支持。

改进的作业调度程序

Spark 的内部作业调度程序已重构和扩展,以包括更复杂的调度策略。 特别是,公平调度程序 实现现在允许多个用户共享 Spark 实例,这有助于运行较短作业的用户获得良好的性能,即使较长时间运行的作业并行运行也是如此。 对拓扑感知调度的支持已扩展,包括能够考虑机架位置以及支持单台计算机上的多个执行程序。

更轻松的部署和链接

用户程序现在可以链接到 Spark,无论他们需要哪个 Hadoop 版本,而无需专门为该 Hadoop 版本发布一个 spark-core 版本。 有关如何链接到不同 Hadoop 版本的说明,请参见 此处

扩展的 EC2 功能

Spark 的 EC2 脚本现在支持在任何可用区中启动。 还添加了对使用较新的“HVM”架构的 EC2 实例类型的支持。 这包括集群计算 (cc1/cc2) 系列的实例类型。 我们还添加了对与 Spark 一起运行较新版本的 HDFS 的支持。 最后,除了启动最新版本之外,我们还添加了启动带有 Spark 维护版本的集群的能力。

改进的文档

此版本添加了有关集群硬件配置以及与常见 Hadoop 发行版互操作的文档。 还包括涵盖 MLlib 机器学习功能和新集群监控功能的文档。 现有文档已更新以反映构建和部署 Spark 的变化。

其他改进

  • 现在可以使用 unpersist 手动从内存中删除 RDD。
  • RDD 类包括以下新操作: takeOrderedzipPartitionstop
  • 已添加 JobLogger 类以生成 Spark 工作负载的可存档日志。
  • RDD.coalesce 函数现在考虑了位置。
  • 已扩展 RDD.pipe 函数以支持将环境变量传递给子进程。
  • Hadoop save 函数现在支持可选的压缩编解码器。
  • 您现在可以创建一个 Spark 的二进制发行版,它仅依赖于 Java 运行时,以便在集群上更轻松地部署。
  • 示例构建已与核心构建隔离,从而大大减少了依赖冲突的可能性。
  • Spark Streaming Twitter API 已更新为使用 OAuth 身份验证,而不是 Spark 0.7.0 中已弃用的用户名/密码身份验证。
  • 已添加了几个新的示例作业,包括 Java、Scala 和 Python 中的 PageRank 实现、用于访问 HBase 和 Cassandra 的示例以及 MLlib 示例。
  • 已改进对在 Mesos 上运行的支持 - 现在您可以部署 Spark 程序集 JAR 作为 Mesos 作业的一部分,而不是在每台机器上预安装 Spark。 默认的 Mesos 版本也已更新到 0.13。
  • 此版本包括对 PySpark 和作业调度程序的各种优化。

兼容性

  • 此版本将 Spark 的包名称更改为“org.apache.spark”,因此从 Spark 0.7 升级的用户需要相应地调整其导入。 此外,我们将 RDD 类移动到 org.apache.spark.rdd 包(以前位于顶层包中)。 通过 Maven 发布的 Spark 项目也已更改为新的包名称。
  • 在 Java API 中,使用 Scala 的 Option 类已被 Guava 库中的 Optional 替换。
  • 现在可以通过指定对 hadoop-client 的依赖关系来链接针对任意 Hadoop 版本的 Spark,而不是针对您的 Hadoop 版本重建 spark-core。 有关详细信息,请参见 此处的文档。
  • 如果您要构建 Spark,现在需要运行 sbt/sbt assembly 而不是 package

致谢

Spark 0.8.0 是迄今为止最大的贡献者团队的结果。 以下开发者为此版本做出了贡献

  • Andrew Ash – 文档、代码清理和日志记录改进
  • Mikhail Bautin – 错误修复
  • Konstantin Boudnik – Maven 构建、错误修复和文档
  • Ian Buss – sbt 配置改进
  • Evan Chan – API 改进、错误修复和文档
  • Lian Cheng – 错误修复
  • Tathagata Das – 流接收器中的性能改进和流式错误修复
  • Aaron Davidson – Python 改进、错误修复和单元测试
  • Giovanni Delussu – 合并的 RDD 功能
  • Joseph E. Gonzalez – zipPartitions 的改进
  • Karen Feng – 对 Web UI 的几项改进
  • Andy Feng – HDFS 指标
  • Ali Ghodsi – 配置改进和位置感知合并
  • Christoph Grothaus – 错误修复
  • Thomas Graves – 支持安全的 YARN 集群和各种 YARN 相关的改进
  • Stephen Haberman – 错误修复、文档和代码清理
  • Mark Hamstra – 错误修复和 Maven 构建
  • Benjamin Hindman – Mesos 兼容性和文档
  • Liang-Chi Hsieh – 构建和 YARN 模式中的错误修复
  • Shane Huang – 混洗改进、错误修复
  • Ethan Jewett – Spark/HBase 示例
  • Holden Karau – 错误修复和 EC2 改进
  • Kody Koeniger – JDBV RDD 实现
  • Andy Konwinski – 文档
  • Jey Kottalam – PySpark 优化、Hadoop 不可知构建(负责人)和错误修复
  • Andrey Kouznetsov – 错误修复
  • S. Kumar – Spark Streaming 示例
  • Ryan LeCompte – topK 方法优化和序列化改进
  • Gavin Li – 压缩编解码器和管道支持
  • Harold Lim – 公平调度程序
  • Dmitriy Lyubimov – 错误修复
  • Chris Mattmann – Apache 指导者
  • David McCauley – JSON API 改进
  • Sean McNamara – 添加了 takeOrdered 函数、错误修复和构建修复
  • Mridul Muralidharan – YARN 集成(负责人)和调度程序改进
  • Marc Mercer – UI json 输出的改进
  • Christopher Nguyen – 错误修复
  • Erik van Oosten – 示例修复
  • Kay Ousterhout – 调度程序回归的修复和错误修复
  • Xinghao Pan – MLLib 贡献
  • Hiral Patel – 错误修复
  • James Phillpotts – 更新了 Spark 流媒体的 Twitter API
  • Nick Pentreath – scala pageRank 示例、bagel 改进和几个 Java 示例
  • Alexander Pivovarov – 日志记录改进和 Maven 构建
  • Mike Potts – 配置改进
  • Rohit Rai – Spark/Cassandra 示例
  • Imran Rashid – 错误修复和 UI 改进
  • Charles Reiss – 错误修复、代码清理、性能改进
  • Josh Rosen – Python API 改进、Java API 改进、EC2 脚本和错误修复
  • Henry Saputra – Apache 指导者
  • Jerry Shao – 错误修复、指标系统
  • Prashant Sharma – 文档
  • Mingfei Shi – joblogger 和错误修复
  • Andre Schumacher – 几个 PySpark 功能
  • Ginger Smith – MLLib 贡献
  • Evan Sparks – 对 MLLib 的贡献
  • Ram Sriharsha – 错误修复和 RDD 删除功能
  • Ameet Talwalkar – MLlib 贡献
  • Roman Tkalenko – 代码重构和清理
  • Chu Tong – Java PageRank 算法和 bash 脚本中的错误修复
  • Shivaram Venkataraman – 错误修复、对 MLLib 的贡献、netty 混洗修复和 Java API 添加
  • Patrick Wendell – 发布经理、错误修复、文档、指标系统和 Web UI
  • Andrew Xia – 公平调度程序(负责人)、指标系统和 UI 改进
  • Reynold Xin – 混洗改进、错误修复、代码重构、可用性改进、MLLib 贡献
  • Matei Zaharia – MLLib 贡献、文档、示例、UI 改进、PySpark 改进和错误修复
  • Wu Zeming – 调度程序中的错误修复
  • Bill Zhao – 日志消息改进

感谢所有做出贡献的人! 我们特别感谢 Patrick Wendell 担任此版本的发布经理。


Spark 新闻存档