Spark 版本 1.0.0

Spark 1.0.0 是一个重要版本,标志着 1.X 系列的开始。此版本带来了各种新功能,并在整个 1.X 系列中提供了强大的 API 兼容性保证。Spark 1.0 新增了一个主要组件 Spark SQL,用于在 Spark 中加载和操作结构化数据。它包含了对 Spark 所有现有标准库(MLStreamingGraphX)的重大扩展,同时增强了 Java 和 Python 的语言支持。最后,Spark 1.0 带来了操作改进,包括对 Hadoop/YARN 安全模型的全面支持,以及所有受支持集群管理器的统一提交流程。

您可以下载 Spark 1.0.0 的源代码包(5 MB tgz)或针对 Hadoop 1 / CDH3CDH4Hadoop 2 / CDH5 / HDP2 的预构建包(160 MB tgz)。发布签名和校验和可在官方 Apache 下载站点获取。

API 稳定性

Spark 1.0.0 是 1.X 主线系列中的第一个版本。Spark 保证其核心 API 在所有 1.X 版本中的稳定性。Spark 历来在 API 更改方面一直非常保守,但这项保证明确了我们对应用程序开发人员的承诺。该项目还清晰地标注了实验性、Alpha 和开发者 API,以指导未来新组件的 API 更改。

与 YARN 安全集成

对于在安全 Hadoop 环境中运行的用户,Spark 现在与 Hadoop/YARN 安全模型集成。Spark 将对作业提交进行身份验证,安全传输 HDFS 凭证,并对组件之间的通信进行身份验证。

操作和打包改进

此版本显著简化了 Spark 应用程序的打包和提交过程。新的 spark-submit 工具允许用户通过通用流程将应用程序提交到任何 Spark 集群,包括本地集群、Mesos 或 YARN。Spark 应用程序打包的文档已大幅扩展。我们还为 Spark 的 Web UI 添加了历史服务器,允许用户在单个应用程序完成后查看 Spark 应用程序数据。

Spark SQL

此版本引入了 Spark SQL 作为新的 Alpha 组件。Spark SQL 支持在 Spark 中加载和操作结构化数据,无论是来自外部结构化数据源(目前为 Hive 和 Parquet)还是通过向现有 RDD 添加 schema。Spark SQL 的 API 与 RDD 数据模型互操作,允许用户将 Spark 代码与 SQL 语句交错使用。在内部,Spark SQL 使用 Catalyst 优化器来选择高效的执行计划,并且可以自动将谓词下推到 Parquet 等存储格式中。在未来的版本中,Spark SQL 还将提供一个通用 API 给其他存储系统。

MLlib 改进

在 1.0.0 版本中,Spark 的 MLlib 增加了对 Scala、Java 和 Python 中稀疏特征向量的支持。它在线性方法、k-means 和朴素贝叶斯中利用了存储和计算的稀疏性。此外,此版本还增加了几种新算法:用于分类和回归的可扩展决策树、包括 SVD 和 PCA 的分布式矩阵算法、模型评估函数,以及作为优化原语的 L-BFGS。MLlib 编程指南和代码示例也得到了极大的扩展。

GraphX 和 Streaming 改进

除了可用性和可维护性改进之外,Spark 1.0 中的 GraphX 在图加载、边反转和邻域计算方面带来了显著的性能提升。这些操作现在需要更少的通信并生成更简单的 RDD 图。Spark 的 Streaming 模块为有状态流转换添加了性能优化,同时改进了 Flume 支持,并为长时间运行的作业提供了自动状态清理。

扩展 Java 和 Python 支持

Spark 1.0 在其 Java 绑定中增加了对 Java 8 新 lambda 语法的支持。Java 8 支持一种简洁的匿名函数编写语法,类似于 Scala 和 Python 中的闭包语法。此更改要求当前 Java API 用户进行少量修改,文档中已对此进行说明。Spark 的 Python API 已扩展以支持多种新函数。我们还在 Python API 中包含了一些稳定性改进,特别是针对大型数据集。PySpark 现在也支持在 YARN 上运行。

文档

Spark 的编程指南已显著扩展,集中涵盖所有受支持的语言,并讨论了更多运算符和开发生命周期的各个方面。MLlib 指南也得到了扩展,为每种算法提供了更多细节和示例,同时关于配置、YARN 和 Mesos 的文档也已更新。

小幅更改

  • PySpark 现在支持更多 Python 版本——Python 2.6+ 而不是 2.7+,以及 NumPy 1.4+ 而不是 1.7+。
  • Spark 已升级到 Avro 1.7.6,增加了对 Avro 特定类型的支持。
  • 已添加内部检测功能,允许应用程序监控和检测 Spark 作业。
  • 通过特殊的构建目标,增加了对 Tachyon 中堆外存储的支持。
  • 使用 DISK_ONLY 持久化的数据集现在直接写入磁盘,显著改善了大型数据集的内存使用。
  • Spark 作业期间创建的中间状态现在在相应的 RDD 不再被引用时进行垃圾回收,从而提高了性能。
  • Spark 现在包含其所有 API 文档的 Javadoc 版本以及所有模块的 统一 Scaladoc
  • 新的 SparkContext.wholeTextFiles 方法允许您将小型文本文件作为单独的记录进行操作。

迁移到 Spark 1.0

尽管大多数 Spark API 与 0.x 版本保持不变,但为了长期的灵活性,进行了一些更改,特别是在 Java API 中(以支持 Java 8 lambda 表达式)。文档中包含 迁移信息,以帮助您升级应用程序。

贡献者

以下开发者为此版本做出了贡献

  • Aaron Davidson – 打包和部署改进,多项错误修复,local[*] 模式
  • Aaron Kimball – 文档改进
  • Abhishek Kumar – Python 配置修复
  • Ahir Reddy – PySpark 构建、修复和取消支持
  • Allan Douglas R. de Oliveira – spark-ec2 脚本改进
  • Andre Schumacher – Parquet 支持和优化
  • Andrew Ash – Mesos 文档及其他文档改进,错误修复
  • Andrew Or – 历史服务器(负责人),垃圾回收(负责人),spark-submit,PySpark 和 YARN 改进
  • Andrew Tulloch – MLlib 贡献和代码清理
  • Andy Konwinski – 文档修复
  • Anita Tailor – Cassandra 示例
  • Ankur Dave – GraphX(负责人)优化、文档和可用性
  • Archer Shao – 错误修复
  • Arun Ramakrishnan – 改进的随机抽样
  • Baishuo – 测试改进
  • Bernardo Gomez Palacio – spark-shell 改进和 Mesos 更新
  • Bharath Bhushan – 错误修复
  • Bijay Bisht – 错误修复
  • Binh Nguyen – 依赖修复
  • Bouke van der Bijl – PySpark 在 Mesos 上的修复及其他 Mesos 修复
  • Bryn Keller – HBase 支持和单元测试改进
  • Chen Chao – 文档、错误修复和代码清理
  • Cheng Hao – Spark SQL 中的性能和功能改进
  • Cheng Lian – Spark SQL 中的列式存储及其他改进
  • Christian Lundgren – spark-ec2 脚本改进
  • DB Tsai – MLlib 中的 L-BGFS 优化器,MLlib 文档和修复
  • Dan McClary – 统计计数器改进
  • Daniel Darabos – GraphX 性能改进
  • Davis Shepherd – 错误修复
  • Diana Carroll – 文档和错误修复
  • Egor Pakhomov – RDD 的本地迭代器
  • Emtiaz Ahmed – 错误修复
  • Erik Selin – 错误修复
  • Ethan Jewett – 文档改进
  • Evan Chan – 应用程序数据的自动清理
  • Evan Sparks – MLlib 优化和文档改进
  • Frank Dai – MLlib 中的代码清理
  • Guoqiang Li – 构建改进和多项错误修复
  • Ghidireac – 错误修复
  • Haoyuan Li – RDD 的 Tachyon 存储级别
  • Harvey Feng – spark-ec2 更新
  • Henry Saputra – 代码清理
  • Henry Cook – Spark SQL 改进
  • Holden Karau – MLlib 中的交叉验证,Python 和核心引擎改进
  • Ivan Wick – Mesos 错误修复
  • Jey Kottalam – sbt 构建改进
  • Jerry Shao – Spark 指标和 Spark SQL 改进
  • Jiacheng Guo – 错误修复
  • Jianghan – 错误修复
  • Jianping J Wang – MLlib 中的 JBLAS 支持
  • Joseph E. Gonzalez – GraphX 改进、修复和文档
  • Josh Rosen – PySpark 改进和错误修复
  • Jyotiska NK – 文档、测试改进和错误修复
  • Kan Zhang – Spark core、SQL 和 PySpark 中的错误修复
  • Kay Ousterhout – 调度器中的错误修复和代码重构
  • Kelvin Chu – 应用程序数据的自动清理
  • Kevin Mader – 示例修复
  • Koert Kuipers – 代码可见性修复
  • Kousuke Saruta – 文档和构建修复
  • Kyle Ellrott – 改进 DISK_ONLY 持久化的内存使用
  • Larva Boy – Spark SQL 中的近似计数
  • Madhu Siddalingaiah – ec2 修复
  • Manish Amde – MLlib 中的决策树
  • Marcelo Vanzin – YARN 支持的改进和修复,依赖清理
  • Mark Grover – 构建修复
  • Mark Hamstra – 构建和依赖改进,调度器错误修复
  • Margin Jaggi – MLlib 文档改进
  • Matei Zaharia – 多个 MLlib 算法的 Python 版本,spark-submit 改进,错误修复和文档改进
  • Michael Armbrust – Spark SQL(负责人),包括 RDD 的 schema 支持,Catalyst 优化器和 Hive 支持
  • Mridul Muralidharan – 代码可见性更改和错误修复
  • Nan Zhu – 错误和稳定性修复,代码清理,文档和新功能
  • Neville Li – 错误修复
  • Nick Lanham – 发布脚本中 Tachyon 的捆绑
  • Nirmal Reddy – 代码清理
  • OuYang Jin – 本地模式和 JSON 改进
  • Patrick Wendell – 发布经理,构建改进,错误修复和代码清理
  • Petko Nikolov – 新的实用函数
  • Prabeesh K – 拼写错误修复
  • Prabin Banka – 新的 PySpark API
  • Prashant Sharma – PySpark 改进,Java 8 lambda 支持和构建改进
  • Punya Biswal – Java API 改进
  • Qiuzhuang Lian – 错误修复
  • Rahul Singhal – 构建改进,错误修复
  • Raymond Liu – YARN 构建修复和 UI 改进
  • Reynold Xin – 错误修复,内部更改,Spark SQL 改进,构建修复和样式改进
  • Reza Zadeh – MLlib 中的 SVD 实现及其他 MLlib 贡献
  • Roman Pastukhov – 广播文件清理
  • Rong Gu – RDD 的 Tachyon 存储级别
  • Sandeep Sing – 多项错误修复,MLlib 改进和 Spark 示例修复
  • Sandy Ryza – spark-submit 脚本和多项 YARN 改进
  • Saurabh Rawat – Java API 改进
  • Sean Owen – 多项构建改进,代码清理和 MLlib 修复
  • Semih Salihoglu – GraphX 改进
  • Shaocun Tian – MLlib 中的错误修复
  • Shivaram Venkataraman – 错误修复
  • Shixiong Zhu – 代码风格和正确性修复
  • Shiyun Wxm – 拼写错误修复
  • Stevo Slavic – 错误修复
  • Sumedh Mungee – 文档修复
  • Sundeep Narravula – Spark UI 中的“取消”按钮
  • Takayu Ueshin – Spark SQL 的错误修复和改进
  • Tathagata Das – Web UI 和 Spark Streaming 的其他改进(负责人),错误修复,状态清理和发布经理
  • Timothy Chen – Spark SQL 改进
  • Ted Malaska – 改进的 Flume 支持
  • Tom Graves – Hadoop 安全集成(负责人)和 YARN 支持
  • Tianshuo Deng – 错误修复
  • Tor Myklebust – ALS 改进
  • Wangfei – Spark SQL 文档
  • Wang Tao – 代码清理
  • William Bendon – JSON 支持更改和错误修复
  • Xiangrui Meng – MLlib 的多项改进(负责人)
  • Xuan Nguyen – 构建修复
  • Xusen Yin – MLlib 贡献和错误修复
  • Ye Xianjin – 测试修复
  • Yinan Li – addFile 改进
  • Yin Hua – Spark SQL 改进
  • Zheng Peng – 错误修复

感谢所有贡献者!


Spark 新闻存档

最新新闻

存档