Spark 发布 1.2.0

Spark 1.2.0 是 1.X 系列的第三个版本。此版本在 Spark 核心引擎中带来了性能和可用性改进,MLlib 的主要新 API,Python 中扩展的 ML 支持,Spark Streaming 中的完全高可用模式,等等。GraphX 取得了重大的性能和 API 改进,并从 alpha 组件毕业。Spark 1.2 代表了来自 60 多个机构的 172 名贡献者通过 1000 多个独立补丁所完成的工作。

要下载 Spark 1.2,请访问下载页面。

Spark 核心

在 1.2 版本中,Spark 核心升级了两个主要子系统,以提高超大规模混洗的性能和稳定性。第一个是 Spark 在批量传输期间使用的通信管理器,它升级到了基于 Netty 的实现。第二个是 Spark 的混洗机制,它升级到了最初在 Spark 1.1 中发布的“基于排序”的混洗。这两项改进都提升了超大规模混洗的性能和稳定性。Spark 还添加了一个弹性伸缩机制,旨在提高长时间运行的 ETL 风格作业期间的集群利用率。该机制目前在 YARN 上受支持,并将在未来版本中推广到其他集群管理器。最后,Spark 1.2 添加了对 Scala 2.11 的支持。有关为 Scala 2.11 构建的说明,请参阅构建文档

Spark Streaming

此版本包含 Spark 流处理库的两项主要功能新增:Python API 和用于完整驱动程序高可用性的预写日志。 Python API 涵盖了几乎所有的 DStream 转换和输出操作。目前支持基于文本文件和套接字文本的输入源。对 Python 中 Kafka 和 Flume 输入流的支持将在下一版本中添加。其次,Spark streaming 现在通过预写日志 (WAL) 支持高可用性驱动程序。在 Spark 1.1 及更早版本中,驱动程序重启期间可能会丢失一些缓冲(已接收但尚未处理)数据。为防止这种情况,Spark 1.2 添加了一个可选的 WAL,它将接收到的数据缓冲到容错文件系统(例如 HDFS)中。有关更多详细信息,请参阅流处理编程指南

MLlib

Spark 1.2 预发布了一组新的机器学习 API,位于名为 spark.ml 的包中,该包支持学习管道,其中多个算法可以按顺序运行并使用不同的参数。这种类型的管道在实际的机器学习部署中很常见。新的 ML 包使用 Spark 的 SchemaRDD 来表示ML 数据集,提供与 Spark SQL 的直接互操作性。除了新 API 之外,Spark 1.2 还通过两种树集成方法扩展了决策树:随机森林梯度提升树,它们是分类和回归中最成功的基于树的模型。最后,MLlib 的 Python 实现 在 1.2 版本中得到了重大更新,以简化添加 Python API 的过程,并提供更好的 Python API 覆盖。

Spark SQL

在此版本中,Spark SQL 添加了一个用于外部数据源的新 API。此 API 支持将外部数据源作为临时表挂载,并支持谓词下推等优化。Spark 的 Parquet 和 JSON 绑定已重写以使用此 API,我们预计在 1.2 生命周期内,各种社区项目将与其它系统和格式集成。

Hive 集成已得到改进,支持固定精度十进制类型Hive 0.13。Spark SQL 还添加了动态分区插入,这是一个流行的 Hive 功能。围绕缓存进行的内部重新架构改进了缓存 SchemaRDD 实例的性能和语义,并增加了对缓存数据基于统计信息的表分区剪枝的支持。

GraphX

在 1.2 版本中,GraphX 从 alpha 组件毕业,并添加了稳定的 API。这意味着针对 GraphX 编写的应用程序可以保证在未来的 Spark 版本中无需代码更改即可工作。引入了一个新的核心 API,aggregateMessages,以取代现在已弃用的 mapReduceTriplet API。新的 aggregateMessages API 具有更命令式的编程模型并提高了性能。一些早期测试用户发现,切换到新 API 后,性能提高了 20% 到 1 倍。

此外,Spark 现在支持图检查点血缘截断,这对于在生产作业中支持大量迭代是必需的。最后,为PageRank图加载添加了一些性能改进。

其他说明

升级到 Spark 1.2

Spark 1.2 与 Spark 1.0 和 1.1 二进制兼容,因此无需进行代码更改。这不包括明确标记为不稳定的 API。Spark 在少数情况下更改了默认配置以提高性能。希望保留与 Spark 1.1 相同配置的用户可以回滚这些更改。

  1. spark.shuffle.blockTransferService 已从 nio 更改为 netty
  2. spark.shuffle.manager 已从 hash 更改为 sort
  3. 在 PySpark 中,默认批处理大小已更改为 0,这意味着批处理大小是根据对象大小选择的。可以使用 SparkContext([... args... ], batchSize=1024) 恢复 1.2 之前的行为。
  4. Spark SQL 已更改以下默认值
    • spark.sql.parquet.cacheMetadata: false -> true
    • spark.sql.parquet.compression.codec: snappy -> gzip
    • spark.sql.hive.convertMetastoreParquet: false -> true
    • spark.sql.inMemoryColumnarStorage.compressed: false -> true
    • spark.sql.inMemoryColumnarStorage.batchSize: 1000 -> 10000
    • spark.sql.autoBroadcastJoinThreshold: 10000 -> 10485760 (10 MB)

已知问题

一些较小的错误未在发布窗口内修复。它们将在 Spark 1.2.1 中修复。

  • Netty 混洗不遵守安全端口配置。解决方法 - 恢复到 nio 混洗:SPARK-4837
  • 创建 EXTERNAL hive 表时出现 java.io.FileNotFound 异常。解决方法 - 设置 hive.stats.autogather = false。SPARK-4892
  • PySpark zip 函数在文本文件输入上异常:SPARK-4841
  • MetricsServlet 未正确初始化:SPARK-4595

鸣谢

  • Aaron Davidson – 核心改进;核心和混洗错误修复;核心和混洗改进
  • Aaron Staple – 核心、MLlib 和 Streaming 改进;PySpark 新功能;SQL 错误修复
  • Adam Pingel – 核心改进
  • Ahir Reddy – 核心改进
  • Akshat Aranya – 核心错误修复
  • Alex Liu – SQL 错误修复
  • Alexander Ulanov – MLlib 新功能
  • Allan Douglas R. De Oliveira – 核心改进
  • Anand Avati – 核心改进
  • Anant Asthana – 核心、MLlib 和 SQL 改进
  • Andrew Ash – 核心文档和错误修复
  • Andrew Bullen – MLlib 错误修复
  • Andrew Or – 核心和 YARN 改进;Windows、核心和 YARN 错误修复;核心和 YARN 改进
  • Andy Konwinski – 核心文档
  • Aniket Bhatnagar – 核心和 Streaming 错误修复
  • Ankur Dave – GraphX 改进和错误修复
  • Arun Ahuja – 核心文档
  • Benoy Antony – Web UI 和 YARN 错误修复
  • Bertrand Bossy – 核心错误修复
  • Bill Bejeck – 核心错误修复
  • Brenden Matthews – Mesos 错误修复
  • Burak Yavuz – MLlib 新功能
  • Chao Chen – 核心改进和文档
  • Cheng Hao – SQL 测试、改进、新功能、错误修复和改进
  • Cheng Lian – 核心和 SQL 改进;SQL 测试;SQL 新功能;核心和 SQL 错误修复;核心文档
  • Chester Chen – YARN 错误修复
  • Chip Senkbeil – 核心新功能
  • Chirag Aggarwal – SQL 错误修复
  • Chris Cope – YARN 错误修复
  • Christoph Sawade – MLlib 和 PySpark 改进
  • Cody Koeninger – SQL 改进
  • Colin Patrick Mccabe – 核心改进
  • DB Tsai – MLlib 改进和改进
  • Dale Richardson – 核心改进
  • Dan McClary – SQL 新功能
  • Dan Osipov – EC2 新功能
  • Daoyuan Wang – 核心和 SQL 改进;SQL 新功能;核心和 SQL 错误修复;核心文档
  • Davies Liu – 核心、SQL、MLlib 和 PySpark 改进;核心、Streaming、PySpark、MLlib 和 PySpark 新功能;Streaming、核心、SQL、MLlib 和 PySpark 错误修复;核心文档
  • Derek Ma – 核心和 Streaming 错误修复
  • DoingDone9 – SQL 错误修复
  • Egor Pahomov – 核心错误修复
  • Eric Eijkelenboom – 核心错误修复
  • Eric Liang – 核心和 SQL 错误修复
  • Erik Erlandson – 核心改进和改进
  • Eugen Cepoi – 核心改进
  • Fairiz Azizi – 核心改进
  • Felix Maximilian Moller – 核心文档
  • Gankun Luo – SQL 错误修复
  • Grega Kespret – 核心文档
  • GuoQiang Li – 核心和 MLlib 改进;核心、Web UI、MLlib 和 PySpark 错误修复;YARN 改进
  • Hari Shreedharan – Streaming 错误修复和改进
  • Henry Cook – 核心文档
  • Holden Karau – 核心文档;PySpark 错误修复
  • Hong Shen – 核心改进
  • Hossein Falaki – Web UI 错误修复
  • Ian Hummel – 核心改进
  • Jacky Li – 核心错误修复
  • Jakub Dubovsky – 核心错误修复
  • Jascha Swisher – 核心错误修复
  • Jay Vyas – 核心文档
  • Jeremy Freeman – Streaming 和 MLlib 新功能;核心和 PySpark 错误修复
  • Jey Kottalam – 核心错误修复
  • Jie Huang – 核心文档和错误修复
  • Jim Carroll – SQL 改进和错误修复
  • Jim Lim – 核心改进;YARN 错误修复
  • Jongyoul Lee – 核心和 Mesos 错误修复
  • Joseph Bradley – MLlib 改进
  • Joseph E. Gonzalez – 核心文档;GraphX 和 MLlib 错误修复
  • Joseph K. Bradley – 核心和 MLlib 改进;MLlib 和 SQL 新功能;MLlib 错误修复;核心和 MLlib 文档
  • Josh Rosen – Java API、核心、Web UI 和 Shuffle 改进;Java API、核心和 Web UI 新功能;核心、PySpark 和 Streaming 错误修复;核心文档
  • Kai Sasaki – 核心错误修复
  • Kay Ousterhout – 核心和 Web UI 改进;核心和 Web UI 错误修复
  • Ken Takagiwa – 核心文档
  • Kenichi Maehashi – 核心改进
  • Kevin Mader – Java API 和核心改进
  • Kousuke Saruta – Project Infra、核心、PySpark、YARN、SQL 和 Web UI 改进;核心、PySpark、MLlib、YARN、SQL 和 Web UI 错误修复;核心文档
  • Larry Xiao – GraphX 改进和错误修复
  • Li Zhihui – 核心改进
  • Liang-Chi Hsieh – 核心改进;核心和 SQL 错误修复
  • Lianhui Wang – GraphX 错误修复
  • Lijie Xu – 核心和 GraphX 错误修复
  • Liquan Pei – 核心文档;MLlib 和 PySpark 新功能
  • Liu Hao – 核心错误修复
  • Lu Lu – GraphX 改进
  • Madhu Siddalingaiah – 核心文档
  • Manish Amde – MLlib 改进和新功能
  • Marcelo Vanzin – YARN 测试;核心和 YARN 改进;核心新功能;核心和 YARN 错误修复;核心改进
  • Mario Pastorelli – 核心文档
  • Mark G. Whitney – YARN 文档
  • Mark Hamstra – 核心错误修复
  • Mark Mims – Web UI 改进
  • Martin Weindel – 核心和 Mesos 文档
  • Masayoshi TSUZUKI – Windows、核心和 PySpark 改进;Windows、核心和 PySpark 错误修复
  • Matei Zaharia – 核心和 SQL 改进;核心和 SQL 错误修复
  • Matthew Cheah – 核心错误修复
  • Matthew Farrellee – 核心改进;PySpark 新功能;核心和 PySpark 错误修复
  • Matthew Rocklin – 核心错误修复
  • Matthew Taylor – SQL 错误修复
  • Michael Armbrust – SQL 改进;SQL 新功能;核心、PySpark 和 SQL 错误修复;核心文档
  • Michael Griffiths – PySpark 错误修复
  • Michelangelo D’Agostino – MLlib 和 PySpark 改进
  • Mike Timper – SQL 错误修复
  • Min Shen – YARN 错误修复
  • Mingfei Shi – 核心错误修复
  • Mubarak Seyed – Streaming 改进
  • NamelessAnalyst – GraphX 改进
  • Nan Zhu – 核心错误修复和改进
  • Nathan Artz – 核心文档
  • Nathan Howell – SQL 错误修复
  • Nicholas Chammas – 核心改进;Project Infra、核心和 EC2 改进;Project Infra、EC2 和 SQL 错误修复;核心文档
  • Niklas Wilcke – MLlib 改进;核心错误修复
  • Nishkam Ravi – 核心错误修复
  • Oded Zimerman – GraphX 错误修复
  • Patrick Wendell – 核心改进;Project Infra、核心和 Mesos 错误修复
  • Prashant Sharma – 核心改进;Streaming 和核心错误修复;核心、YARN 和 Streaming 改进
  • Praveen Seluka - 核心新功能
  • Qiping Li – MLlib 改进和新功能
  • RJ Nowling – MLlib 改进;GraphX 错误修复;核心文档
  • Ravindra Pesala – SQL 改进、新功能和错误修复
  • Raymond Liu – 核心和 Shuffle 改进
  • Renat Yusupov – SQL 错误修复
  • Reno Zhang – YARN 改进
  • Reynold Xin – 核心、Shuffle、EC2 和 SQL 改进;Project Infra、核心和 EC2 新功能;核心和 SQL 错误修复;核心、Shuffle 和 SQL 改进
  • Reza Zadeh – 核心改进;MLlib 新功能;核心文档
  • Rob O’Dwyer – PySpark 改进
  • Rong Gu – 核心改进
  • Rui Li – Java API 新功能
  • Saisai Shao – Streaming 改进;Streaming 和 Shuffle 错误修复
  • Sandy Ryza – 核心、MLlib 和 YARN 改进;核心新功能;核心和 SQL 错误修复
  • Santiago M. Mola – 核心文档
  • Sean Owen – Streaming 改进;核心和 Streaming 改进;核心新功能;Java API、核心、MLlib 和 Streaming 错误修复;核心文档
  • Shane Knapp – 核心错误修复
  • Shiti Saxena – 核心改进
  • Shivaram Venkataraman – 核心改进;核心和 EC2 错误修复
  • Shixiong Zhu – 核心测试;核心和 Web UI 改进;核心、Web UI 和 YARN 错误修复;Streaming 和核心文档
  • Bai Shou – SQL 改进和错误修复
  • Shuo Xiang – MLlib 新功能和错误修复
  • Su Yan – 核心错误修复
  • Sung Chung – MLlib 改进
  • Surong Quan – Streaming 改进
  • Takuya UESHIN – SQL 测试;核心文档;核心和 SQL 错误修复;SQL 改进
  • Tal Sliwowicz – 核心错误修复
  • Tathagata Das – 核心和 Streaming 改进;Streaming 和核心错误修复;Streaming 改进
  • Ted Yu – 核心错误修复和改进
  • Thomas Graves – 核心和 YARN 错误修复
  • Tianshuo Deng – 核心和 Shuffle 错误修复
  • Timothy Chen – Mesos 错误修复
  • Tingjun Xu – YARN 错误修复
  • Tomohiko K. – 核心和 PySpark 错误修复;PySpark 改进
  • Uncle Gen – GraphX 改进
  • Uri Laserson – PySpark 改进
  • Varadharajan Mukundan – 核心改进
  • Venkata Ramana Gollamudi – SQL 新功能和错误修复
  • Victor Tso – 核心错误修复
  • Vida Ha – SQL 改进;EC2 错误修复
  • Viper Kun – 核心文档
  • Wang Fei – SQL 测试;核心和 SQL 改进;核心和 SQL 错误修复;核心文档
  • Wang Tao – 核心、YARN 和 SQL 改进;核心和 YARN 错误修复
  • Ward Viaene – PySpark 错误修复
  • Wenchen Fan – SQL 错误修复
  • William Benton – SQL 改进和错误修复
  • Xiangrui Meng – 核心、PySpark、MLlib、SQL、Java API 和 Web UI 改进;核心文档;SQL、MLlib 和 PySpark 新功能;核心、MLlib 和 PySpark 错误修复;PySpark、MLlib 和 SQL 改进
  • Xinyun Huang – SQL 改进
  • Yadong Qi – 核心测试;Streaming 改进和错误修复
  • Yanbo Liang – MLlib 新功能
  • Yantang Zhai – 核心改进;核心、Web UI 和 SQL 错误修复
  • Yash Datta – SQL 改进
  • Ye Xianjin – 核心改进
  • Yin Huai – 核心文档;SQL 错误修复
  • Zdenek Farana – SQL 错误修复
  • Zhan Zhang – SQL 构建修复
  • Zhang, Liye – 核心改进和错误修复

感谢所有贡献者!


Spark 新闻存档

最新新闻

存档