Spark 1.2.0 发布
Spark 1.2.0 是 1.X 系列的第三个版本。此版本为 Spark 的核心引擎带来了性能和可用性改进,MLlib 的主要新 API,Python 中扩展的 ML 支持,Spark Streaming 中的完全 H/A 模式等等。 GraphX 已经看到了主要的性能和 API 改进,并从 Alpha 组件毕业。 Spark 1.2 代表了来自 60 多个机构的 172 位贡献者在 1000 多个单独补丁中的工作。
要下载 Spark 1.2,请访问下载页面。
Spark Core
在 1.2 中,Spark core 升级了两个主要的子系统,以提高大规模洗牌的性能和稳定性。 首先是 Spark 在批量传输期间使用的通信管理器,它升级到了一个基于netty 的实现。 第二个是 Spark 的洗牌机制,它升级到了最初在 Spark 1.1 中发布的“基于排序”的洗牌。 这些都提高了大规模洗牌的性能和稳定性。 Spark 还添加了一个弹性扩展机制,旨在提高长时间运行的 ETL 样式作业期间的集群利用率。 目前在 YARN 上支持此功能,将来版本中将会推广到其他集群管理器。 最后,Spark 1.2 添加了对 Scala 2.11 的支持。 有关为 Scala 2.11 构建的说明,请参阅构建文档。
Spark Streaming
此版本包括 Spark 流库的两个主要功能添加,一个 Python API 和一个用于完全驱动程序 H/A 的预写日志。 Python API涵盖了几乎所有的 DStream 转换和输出操作。 当前支持基于文本文件和套接字上的文本的输入源。 下一个版本中将添加对 Python 中 Kafka 和 Flume 输入流的支持。 其次,Spark 流媒体现在通过预写日志 (WAL)具有 H/A 驱动程序支持。 在 Spark 1.1 及更早版本中,在驱动程序重新启动期间可能会丢失一些缓冲的(已接收但尚未处理)数据。 为了防止这种情况,Spark 1.2 添加了一个可选的 WAL,该 WAL 将接收到的数据缓冲到容错文件系统(例如 HDFS)中。 有关更多详细信息,请参见流编程指南。
MLLib
Spark 1.2 预览了一个名为 spark.ml 的软件包中的一组新的机器学习 API,该软件包支持学习管道,其中多个算法按顺序运行,参数各不相同。 这种类型的管道在实际的机器学习部署中很常见。 新的 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 相同配置的用户可以回滚这些更改。
spark.shuffle.blockTransferService
已从nio
更改为netty
spark.shuffle.manager
已从hash
更改为sort
- 在 PySpark 中,默认批处理大小已更改为 0,这意味着批处理大小是根据对象的大小选择的。 可以使用
SparkContext([... args... ], batchSize=1024)
还原到 1.2 之前的行为。
- 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 shuffle 不遵守安全端口配置。 解决方法 - 恢复为 nio shuffle:SPARK-4837
- 创建 EXTERNAL hive 表时出现 java.io.FileNotFound 异常。 解决方法 - 设置 hive.stats.autogather = false。 SPARK-4892。
- 文本文件输入上的 Exception PySpark zip 函数:SPARK-4841
- MetricsServlet 未正确初始化:SPARK-4595
鸣谢
- Aaron Davidson – Core 中的改进; Core 和 Shuffle 中的错误修复; Core 和 Shuffle 中的改进
- Aaron Staple – Core、MLlib 和 Streaming 中的改进; PySpark 中的新功能; SQL 中的错误修复
- Adam Pingel – Core 中的改进
- Ahir Reddy – Core 中的改进
- Akshat Aranya – Core 中的错误修复
- Alex Liu – SQL 中的错误修复
- Alexander Ulanov – MLlib 中的新功能
- Allan Douglas R. De Oliveira – Core 中的改进
- Anand Avati – Core 中的改进
- Anant Asthana – Core、MLlib 和 SQL 中的改进
- Andrew Ash – Core 中的文档和错误修复
- Andrew Bullen – MLlib 中的错误修复
- Andrew Or – Core 和 YARN 中的改进; Windows、Core 和 YARN 中的错误修复; Core 和 YARN 中的改进
- Andy Konwinski – Core 中的文档
- Aniket Bhatnagar – Core 和 Streaming 中的错误修复
- Ankur Dave – GraphX 中的改进和错误修复
- Arun Ahuja – Core 中的文档
- Benoy Antony – Web UI 和 YARN 中的错误修复
- Bertrand Bossy – Core 中的错误修复
- Bill Bejeck – Core 中的错误修复
- Brenden Matthews – Mesos 中的错误修复
- Burak Yavuz – MLlib 中的新功能
- Chao Chen – Core 中的改进和文档
- Cheng Hao – SQL 中的测试、改进、新功能、错误修复和改进
- Cheng Lian – Core 和 SQL 中的改进; SQL 中的测试; SQL 中的新功能; Core 和 SQL 中的错误修复; Core 中的文档
- Chester Chen – YARN 中的错误修复
- Chip Senkbeil – Core 中的新功能
- Chirag Aggarwal – SQL 中的错误修复
- Chris Cope – YARN 中的错误修复
- Christoph Sawade – MLlib 和 PySpark 中的改进
- Cody Koeninger – SQL 中的改进
- Colin Patrick Mccabe – Core 中的改进
- DB Tsai – MLlib 中的改进和改进
- Dale Richardson – Core 中的改进
- Dan McClary – SQL 中的新功能
- Dan Osipov – EC2 中的新功能
- Daoyuan Wang – Core 和 SQL 中的改进; SQL 中的新功能; Core 和 SQL 中的错误修复; Core 中的文档
- Davies Liu – Core, SQL, MLlib 和 PySpark 的改进; Core, Streaming, PySpark 和 MLlib,以及 PySpark 的新功能; Streaming, Core, SQL, MLlib 和 PySpark 的错误修复; Core 中的文档
- Derek Ma – Core 和 Streaming 的错误修复
- DoingDone9 – SQL 的错误修复
- Egor Pahomov – Core 的错误修复
- Eric Eijkelenboom – Core 的错误修复
- Eric Liang – Core 和 SQL 的错误修复
- Erik Erlandson – Core 的改进
- Eugen Cepoi – Core 的改进
- Fairiz Azizi – Core 的改进
- Felix Maximilian Moller – Core 中的文档
- Gankun Luo – SQL 的错误修复
- Grega Kespret – Core 中的文档
- GuoQiang Li – Core 和 MLlib 的改进; Core, Web UI, MLlib 和 PySpark 的错误修复; YARN 的改进
- Hari Shreedharan – Streaming 的错误修复和改进
- Henry Cook – Core 中的文档
- Holden Karau – Core 中的文档; PySpark 的错误修复
- Hong Shen – Core 的改进
- Hossein Falaki – Web UI 的错误修复
- Ian Hummel – Core 的改进
- Jacky Li – Core 的错误修复
- Jakub Dubovsky – Core 的错误修复
- Jascha Swisher – Core 的错误修复
- Jay Vyas – Core 中的文档
- Jeremy Freeman – Streaming 和 MLlib 的新功能; Core 和 PySpark 的错误修复
- Jey Kottalam – Core 的错误修复
- Jie Huang – Core 中的文档和错误修复
- Jim Carroll – SQL 的改进和错误修复
- Jim Lim – Core 的改进; YARN 的错误修复
- Jongyoul Lee – Core 和 Mesos 的错误修复
- Joseph Bradley – MLlib 的改进
- Joseph E. Gonzalez – Core 中的文档; GraphX 和 MLlib 的错误修复
- Joseph K. Bradley – Core 和 MLlib 的改进; MLlib 和 SQL 的新功能; MLlib 的错误修复; Core 和 MLlib 中的文档
- Josh Rosen – Java API, Core, Web UI 和 Shuffle 的改进; Java API, Core 和 Web UI 的新功能; Core, PySpark 和 Streaming 的错误修复; Core 中的文档
- Kai Sasaki – Core 的错误修复
- Kay Ousterhout – Core 和 Web UI 的改进; Core 和 Web UI 的错误修复
- Ken Takagiwa – Core 中的文档
- Kenichi Maehashi – Core 的改进
- Kevin Mader – Java API 和 Core 的改进
- Kousuke Saruta – Project Infra, Core, PySpark, YARN, SQL 和 Web UI 的改进; Core, PySpark, MLlib, YARN, SQL 和 Web UI 的错误修复; Core 中的文档
- Larry Xiao – GraphX 的改进和错误修复
- Li Zhihui – Core 的改进
- Liang-Chi Hsieh – Core 的改进; Core 和 SQL 的错误修复
- Lianhui Wang – GraphX 的错误修复
- Lijie Xu – Core 和 GraphX 的错误修复
- Liquan Pei – Core 中的文档; MLlib 和 PySpark 的新功能
- Liu Hao – Core 的错误修复
- Lu Lu – GraphX 的改进
- Madhu Siddalingaiah – Core 中的文档
- Manish Amde – MLlib 的改进和新功能
- Marcelo Vanzin – YARN 中的测试; Core 和 YARN 的改进; Core 的新功能; Core 和 YARN 的错误修复; Core 的改进
- Mario Pastorelli – Core 中的文档
- Mark G. Whitney – YARN 中的文档
- Mark Hamstra – Core 的错误修复
- Mark Mims – Web UI 的改进
- Martin Weindel – Core 和 Mesos 中的文档
- Masayoshi TSUZUKI – Windows, Core 和 PySpark 的改进; Windows, Core 和 PySpark 的错误修复
- Matei Zaharia – Core 和 SQL 的改进; Core 和 SQL 的错误修复
- Matthew Cheah – Core 的错误修复
- Matthew Farrellee – Core 的改进; PySpark 的新功能; Core 和 PySpark 的错误修复
- Matthew Rocklin – Core 的错误修复
- Matthew Taylor – SQL 的错误修复
- Michael Armbrust – SQL 的改进; SQL 的新功能; Core, PySpark 和 SQL 的错误修复; Core 中的文档
- Michael Griffiths – PySpark 的错误修复
- Michelangelo D’Agostino – MLlib 和 PySpark 的改进
- Mike Timper – SQL 的错误修复
- Min Shen – YARN 的错误修复
- Mingfei Shi – Core 的错误修复
- Mubarak Seyed – Streaming 的改进
- NamelessAnalyst – GraphX 的改进
- Nan Zhu – Core 的错误修复和改进
- Nathan Artz – Core 中的文档
- Nathan Howell – SQL 的错误修复
- Nicholas Chammas – Core 的改进; Project Infra, Core 和 EC2 的改进; Project Infra, EC2 和 SQL 的错误修复; Core 中的文档
- Niklas Wilcke – MLlib 的改进; Core 的错误修复
- Nishkam Ravi – Core 的错误修复
- Oded Zimerman – GraphX 的错误修复
- Patrick Wendell – Core 的改进; Project Infra, Core 和 Mesos 的错误修复
- Prashant Sharma – Core 的改进; Streaming 和 Core 的错误修复; Core, YARN 和 Streaming 的改进
- Praveen Seluka - Core 的新功能
- Qiping Li – MLlib 的改进和新功能
- RJ Nowling – MLlib 的改进; GraphX 的错误修复; Core 中的文档
- Ravindra Pesala – SQL 的改进、新功能和错误修复
- Raymond Liu – Core 和 Shuffle 的改进
- Renat Yusupov – SQL 的错误修复
- Reno Zhang – YARN 的改进
- Reynold Xin – Core, Shuffle, EC2 和 SQL 的改进; Project Infra, Core 和 EC2 的新功能; Core 和 SQL 的错误修复; Core, Shuffle 和 SQL 的改进
- Reza Zadeh – Core 的改进; MLlib 的新功能; Core 中的文档
- Rob O’Dwyer – PySpark 的改进
- Rong Gu – Core 的改进
- Rui Li – Java API 的新功能
- Saisai Shao – Streaming 的改进; Streaming 和 Shuffle 的错误修复
- Sandy Ryza – Core, MLlib 和 YARN 的改进; Core 的新功能; Core 和 SQL 的错误修复
- Santiago M. Mola – Core 中的文档
- Sean Owen – Streaming 的改进; Core 和 Streaming 的改进; Core 的新功能; Java API, Core, MLlib 和 Streaming 的错误修复; Core 中的文档
- Shane Knapp – Core 的错误修复
- Shiti Saxena – Core 的改进
- Shivaram Venkataraman – Core 的改进; Core 和 EC2 的错误修复
- Shixiong Zhu – Core 中的测试; Core 和 Web UI 的改进; Core, Web UI 和 YARN 的错误修复; Streaming 和 Core 中的文档
- Bai Shou – SQL 的改进和错误修复
- Shuo Xiang – MLlib 的新功能和错误修复
- Su Yan – Core 的错误修复
- Sung Chung – MLlib 的改进
- Surong Quan – Streaming 的改进
- Takuya UESHIN – SQL 中的测试; Core 中的文档; Core 和 SQL 的错误修复; SQL 的改进
- Tal Sliwowicz – Core 的错误修复
- Tathagata Das – Core 和 Streaming 的改进; Streaming 和 Core 的错误修复; Streaming 的改进
- Ted Yu – Core 的错误修复和改进
- Thomas Graves – Core 和 YARN 的错误修复
- Tianshuo Deng – Core 和 Shuffle 的错误修复
- Timothy Chen – Mesos 的错误修复
- Tingjun Xu – YARN 的错误修复
- Tomohiko K. – Core 和 PySpark 的错误修复; PySpark 的改进
- Uncle Gen – GraphX 的改进
- Uri Laserson – PySpark 的改进
- Varadharajan Mukundan – Core 的改进
- Venkata Ramana Gollamudi – SQL 的新功能和错误修复
- Victor Tso – Core 的错误修复
- Vida Ha – SQL 的改进; EC2 的错误修复
- Viper Kun – Core 中的文档
- Wang Fei – SQL 中的测试; Core 和 SQL 的改进; Core 和 SQL 的错误修复; Core 中的文档
- Wang Tao – Core, YARN 和 SQL 的改进; Core 和 YARN 的错误修复
- Ward Viaene – PySpark 的错误修复
- Wenchen Fan – SQL 的错误修复
- William Benton – SQL 的改进和错误修复
- Xiangrui Meng – Core, PySpark, MLlib, SQL, Java API 和 Web UI 的改进; Core 中的文档; SQL, MLlib 和 PySpark 的新功能; Core, MLlib 和 PySpark 的错误修复; PySpark, MLlib 和 SQL 的改进
- Xinyun Huang – SQL 的改进
- Yadong Qi – Core 中的测试; Streaming 的改进和错误修复
- Yanbo Liang – MLlib 的新功能
- Yantang Zhai – Core 的改进; Core, Web UI 和 SQL 的错误修复
- Yash Datta – SQL 的改进
- Ye Xianjin – Core 的改进
- Yin Huai – Core 中的文档; SQL 的错误修复
- Zdenek Farana – SQL 的错误修复
- Zhan Zhang – SQL 中的构建修复
- Zhang, Liye – Core 的改进和错误修复
感谢所有贡献者!
Spark 新闻存档