Spark 1.0.0 是一个重要版本,标志着 1.X 系列的开始。此版本带来了各种新功能,并在整个 1.X 系列中提供了强大的 API 兼容性保证。Spark 1.0 新增了一个主要组件 Spark SQL,用于在 Spark 中加载和操作结构化数据。它包含了对 Spark 所有现有标准库(ML、Streaming 和 GraphX)的重大扩展,同时增强了 Java 和 Python 的语言支持。最后,Spark 1.0 带来了操作改进,包括对 Hadoop/YARN 安全模型的全面支持,以及所有受支持集群管理器的统一提交流程。
您可以下载 Spark 1.0.0 的源代码包(5 MB tgz)或针对 Hadoop 1 / CDH3、CDH4 或 Hadoop 2 / CDH5 / HDP2 的预构建包(160 MB tgz)。发布签名和校验和可在官方 Apache 下载站点获取。
Spark 1.0.0 是 1.X 主线系列中的第一个版本。Spark 保证其核心 API 在所有 1.X 版本中的稳定性。Spark 历来在 API 更改方面一直非常保守,但这项保证明确了我们对应用程序开发人员的承诺。该项目还清晰地标注了实验性、Alpha 和开发者 API,以指导未来新组件的 API 更改。
对于在安全 Hadoop 环境中运行的用户,Spark 现在与 Hadoop/YARN 安全模型集成。Spark 将对作业提交进行身份验证,安全传输 HDFS 凭证,并对组件之间的通信进行身份验证。
此版本显著简化了 Spark 应用程序的打包和提交过程。新的 spark-submit 工具允许用户通过通用流程将应用程序提交到任何 Spark 集群,包括本地集群、Mesos 或 YARN。Spark 应用程序打包的文档已大幅扩展。我们还为 Spark 的 Web UI 添加了历史服务器,允许用户在单个应用程序完成后查看 Spark 应用程序数据。
此版本引入了 Spark SQL 作为新的 Alpha 组件。Spark SQL 支持在 Spark 中加载和操作结构化数据,无论是来自外部结构化数据源(目前为 Hive 和 Parquet)还是通过向现有 RDD 添加 schema。Spark SQL 的 API 与 RDD 数据模型互操作,允许用户将 Spark 代码与 SQL 语句交错使用。在内部,Spark SQL 使用 Catalyst 优化器来选择高效的执行计划,并且可以自动将谓词下推到 Parquet 等存储格式中。在未来的版本中,Spark SQL 还将提供一个通用 API 给其他存储系统。
在 1.0.0 版本中,Spark 的 MLlib 增加了对 Scala、Java 和 Python 中稀疏特征向量的支持。它在线性方法、k-means 和朴素贝叶斯中利用了存储和计算的稀疏性。此外,此版本还增加了几种新算法:用于分类和回归的可扩展决策树、包括 SVD 和 PCA 的分布式矩阵算法、模型评估函数,以及作为优化原语的 L-BFGS。MLlib 编程指南和代码示例也得到了极大的扩展。
除了可用性和可维护性改进之外,Spark 1.0 中的 GraphX 在图加载、边反转和邻域计算方面带来了显著的性能提升。这些操作现在需要更少的通信并生成更简单的 RDD 图。Spark 的 Streaming 模块为有状态流转换添加了性能优化,同时改进了 Flume 支持,并为长时间运行的作业提供了自动状态清理。
Spark 1.0 在其 Java 绑定中增加了对 Java 8 新 lambda 语法的支持。Java 8 支持一种简洁的匿名函数编写语法,类似于 Scala 和 Python 中的闭包语法。此更改要求当前 Java API 用户进行少量修改,文档中已对此进行说明。Spark 的 Python API 已扩展以支持多种新函数。我们还在 Python API 中包含了一些稳定性改进,特别是针对大型数据集。PySpark 现在也支持在 YARN 上运行。
Spark 的编程指南已显著扩展,集中涵盖所有受支持的语言,并讨论了更多运算符和开发生命周期的各个方面。MLlib 指南也得到了扩展,为每种算法提供了更多细节和示例,同时关于配置、YARN 和 Mesos 的文档也已更新。
DISK_ONLY
持久化的数据集现在直接写入磁盘,显著改善了大型数据集的内存使用。尽管大多数 Spark API 与 0.x 版本保持不变,但为了长期的灵活性,进行了一些更改,特别是在 Java API 中(以支持 Java 8 lambda 表达式)。文档中包含 迁移信息,以帮助您升级应用程序。
以下开发者为此版本做出了贡献
感谢所有贡献者!