Spark 1.1.0 版本发布

Spark 1.1.0 是 1.X 系列的第一个次要版本。此版本为 Spark 核心带来了操作和性能改进,并显著扩展了 Spark 最新的库:MLlib 和 Spark SQL。它还增强了 Spark 的 Python 支持,并为 Spark Streaming 模块添加了新组件。Spark 1.1 凝聚了 171 位贡献者的工作,是 Spark 发布版本中贡献者最多的一次!

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

性能和可用性改进

总体而言,Spark 1.1 增加了功能以提高稳定性与性能,特别是对于大规模工作负载。Spark 现在在缓存操作期间对倾斜块执行磁盘溢写,以防止单个 RDD 分区过大时发生内存溢出。在 Spark 1.0 中引入的聚合期间磁盘溢写功能已移植到 PySpark。此版本引入了针对超大规模 shuffle 进行优化的新 shuffle 实现。这种“基于排序的 shuffle”将在下一个版本中成为默认设置,现在已可供用户使用。对于拥有大量 reducer 的作业,我们建议开启此功能。此版本还增加了多项可用性改进,用于监控长时间运行或复杂作业的性能。其中的变化包括在 Spark UI 中显示的更完善的命名累加器、针对进度任务的指标动态更新,以及针对读取输入数据的任务的输入指标报告

Spark SQL

Spark SQL 在此版本中增加了一些新功能和性能改进。一个 JDBC/ODBC 服务器 允许用户从许多不同的应用程序连接到 SparkSQL,并提供对缓存表的共享访问。一个新的模块提供了 直接将 JSON 数据加载到 Spark 的 SchemaRDD 格式中 的支持,包括自动模式推断。Spark SQL 在此版本中引入了 动态字节码生成,这项技术显著加快了执行复杂表达式评估的查询的速度。此版本还增加了对将 Python、Scala 和 Java lambda 函数注册为 UDF 的支持,这些函数可以直接在 SQL 中调用。Spark 1.1 增加了 公共类型 API,允许用户从自定义数据源创建 SchemaRDD。最后,对原生 Parquet 支持以及整个引擎都添加了许多优化。

MLlib

MLlib 在此版本中增加了多项新算法和优化。1.1 版本引入了一个 新的统计包库,提供了探索性分析功能。这些功能包括分层抽样、相关性、卡方检验以及创建随机数据集的支持。此版本增加了特征提取(Word2VecTF-IDF)和特征转换(归一化和标准缩放)的工具。新增的功能还包括对 非负矩阵分解 和通过 Lanczos 进行 SVD 的支持。决策树算法已 在 Python 和 Java 中添加。还添加了一个树聚合原语,以帮助优化许多现有算法。MLlib 1.1 的整体性能得到提升,许多算法的性能提高了约 2-3 倍,对于大规模决策树问题,性能最高可提高 5 倍。

GraphX 和 Spark Streaming

Spark Streaming 新增了一个数据源 Amazon Kinesis。对于 Apache Flume,支持一种新的模式,可以从 Flume 拉取数据,简化部署并提供高可用性。第一组 流式机器学习算法 随流式线性回归一起引入。最后,为流式输入添加了 速率限制。GraphX 增加了 顶点和边的自定义存储级别,并全面 改进了数值精度。最后,GraphX 添加了一个新的标签传播算法。

其他显著改进

  • PySpark 现在允许读取写入任意 Hadoop InputFormat,包括 SequenceFiles、HBase、Cassandra、Avro 和其他数据源
  • 在 Spark UI 中,现在可以优雅地处理阶段重新提交
  • Spark 支持对所有网络端口设置严格的防火墙规则
  • GraphX 中一个影响顶点数超过 40 亿的图的溢出 bug 已被修复

升级说明

Spark 1.1.0 向后兼容 Spark 1.0.X。一些配置选项的默认值已更改,这可能与现有用户相关

  • spark.io.compression.codec 的默认值现在是 snappy,以改善内存使用。可以通过切换到 lzf 来恢复旧行为。
  • spark.broadcast.factory 的默认值现在是 org.apache.spark.broadcast.TorrentBroadcastFactory,以提高广播效率。可以通过切换到 org.apache.spark.broadcast.HttpBroadcastFactory 来恢复旧行为。
  • PySpark 现在在聚合期间执行外部溢写。可以通过将 spark.shuffle.spill 设置为 false 来恢复旧行为。
  • PySpark 使用一种新的启发式方法来确定 shuffle 操作的并行度。可以通过将 spark.default.parallelism 设置为集群中的核心数来恢复旧行为。

已解决问题的完整列表

贡献者

  • Aaron Davidson – PySpark 优化,Spark 核心的修复和优化
  • Aaron Staple – Spark 核心 Spark SQL 的修复
  • Ahir Reddy – Spark SQL 修复
  • Albert Chu – 配置修复
  • Alexander Ulanov – MLlib 中的多类别评估指标
  • Alex Liu – bug 修复
  • Ali Ghodsi – 文档修复
  • Allan Douglas R. de Oliveira – EC2 脚本增强和 coGroup 修复
  • Ameet Talwalkar – MLlib 文档
  • Anand Avati – 构建和 SQL 修复
  • Anant – Python 和文档修复
  • Anatoli Fomenko – MLlib 文档修复
  • Andrew Ash – 文档改进和 bug 修复
  • Andrew Xia – 外部排序功能
  • Andrew Or – 外部溢写功能、bug 修复和优化
  • Andrew Schumacher – Spark SQL 中的 Parquet 支持
  • Ankit Bhardwaj – bug 修复
  • Ankur Dave – GraphX 优化和改进
  • Ariel Rabkin – 文档修复
  • Arkadiusz Komarzewski – 文档修复
  • Artjom Metrio – 示例修复
  • Baishuo – Spark SQL 中的 bug 修复
  • Basit Mustafa – EC2 脚本修复
  • Bernardo Gomez Palacio – 构建修复和 YARN 修复
  • Brock Noland – 构建改进
  • Bruno Paulin – Java 中的 emptyRDD
  • Burak – 文档和代码修复
  • Carl Max – 代码清理
  • Cesar Arevalo – 拼写错误修复
  • Chandan Kumar – bug 修复和文档修复
  • 陈超 – 示例和代码清理
  • 程浩 – Spark SQL 的优化和修复
  • 程廉 – Spark SQL 中的 JDBC 服务器(负责人),Spark SQL 中的多项优化和修复
  • 苏佳蓉 – Spark SQL 中的 bug 修复
  • Chris Cope – 代码清理
  • Chris Fregly – Spark Streaming 的 AWS Kinesis 支持
  • Christian Tzolov – 构建中的 Pivotal 支持
  • Clement Mathieu – 文档修复
  • Colin McCabe – 构建修复
  • Daehan Kim – 示例修复
  • Daniel Darabos – bug 修复和 UI 增强
  • 王道远 – SQL 修复
  • David Lemieux – bug 修复
  • Davies Liu – PySpark 修复和溢写
  • DB Tsai – MLlib 中的在线摘要和其他 MLlib 功能
  • Derek Ma – bug 修复
  • Doris Xin – MLlib 统计库和多项修复
  • Erik Selin – bug 修复
  • Fireflyc – bug 修复
  • Gabriel Nizzoli – Spark Streaming 中的 bug 修复
  • 白刚 – MLlib 修复
  • Gera Shegalov – bug 修复
  • Gil Vernik – OpenStack Swift 文档
  • 陈冠成 – 文档修复
  • Guillaume Ballet – 构建修复
  • 李国强 – Spark 核心和 MLlib 中的 bug 修复
  • 郭伟 – Spark SQL 中的 bug 修复
  • 李浩源 – Tachyon 修复
  • Hari Shreeharan – Spark Streaming 的 Flume 轮询源
  • Henry Cook – SQL 文档编辑
  • Henry Saputra – 日志和文档修复
  • Hossein Falaki – 优化修复
  • Ian O Connel – SQL 修复
  • Issac Buenrostro – Spark Streaming 中的限流
  • Jacek Laskowski – 代码清理
  • 高志明 – 构建修复
  • Jean-Martin Archer – EC2 脚本改进
  • Jeff Thompson – 拼写错误修复
  • Jeremy Freeman – 流式 MLlib 算法和 Python 统计计数器
  • 邵杰 – shuffle 改进和 bug 修复
  • 姜 – 文档修复
  • Jon Sondag – MLlib 修复
  • Joseph Bradley – 决策树 Python API 和其他 MLlib 功能
  • Joseph Gonzalez – GraphX 基准测试和分区功能
  • Josh Rosen – Python 优化和修复,Spark 核心和 EC2 修复
  • Joy Yoj – 流式修复
  • Jyotiska NK – 文档修复
  • Kalpit Shah – 构建修复
  • 张侃 – 核心和 Python 的修复,PySpark 的增强
  • Kay Ousterhout – 输入数据指标,代码清理和增强
  • K Ballou – 文档修复
  • Ken Takagiwa – bug 修复
  • Koert Kuipers – Kryo 配置选项
  • Kousuke Saruta – Spark 核心的稳定性修复
  • Larry Xiao – GraphX bug 修复
  • Lars Albertsson – Spark Streaming bug 修复
  • 谢良奇 – 优化
  • 徐立杰 – 日志修复
  • 李普 – MLlib 贡献
  • 裴立泉 – MLlib 中的 Word2Vec
  • Lu Luorta – GraphX 修复
  • 骆感坤 – SQL 测试修复
  • Ly Lai – Spark SQL 中的 bug 修复
  • Madhu Siddalingaiah – 外部排序功能
  • Manish Amde – 决策树的多类别支持
  • Manuel Laflamme – 流式修复
  • Marcelo Vanzin – YARN 代码的修复和改进
  • Mark Hamstra – Mesos 的 bug 修复
  • Mark Wagner – bug 修复
  • Masayoshi Tsuzuki – bug 修复
  • Matei Zaharia – bug 和文档修复,基于排序的 shuffle(负责人)和外部排序
  • Matt Forbes – 拼写错误修复
  • Matthew Farrelle - bug 修复
  • Michael Armbrust – Spark SQL 的功能和性能增强(负责人)
  • Michael Giannakopoulos – MLlib 改进和文档
  • Naftali Harris – bug 修复
  • 朱楠 – bug 修复和文档修复
  • Nevelle Li – UI 和 MLlib bug 修复
  • Nicholas Chammas – EC2 修复,代码清理和项目基础设施
  • Nick Pentreath – PySpark 的 SequenceFile 支持
  • Oleg Danilov – bug 修复
  • Ori Kremer – bug 修复
  • Patrick Wendell – 命名累加器功能和 1.1 版本发布经理
  • 张鹏 – MLlib 修复
  • Peter MacKinnon – 构建修复
  • Piotr Szul – PySpark 修复
  • Prashant Sharma – 构建和 MIMA 工具的工作,repl 中的 bug 修复
  • Prudhvi Krishna – bug 修复
  • Punya Biswal – Java 中的 subtractByKey
  • Qipinglgp – 测试修复
  • 连秋庄 – 测试修复
  • Rahul Singhal – YARN 和指标改进
  • Ravikanth Nawada – bug 修复
  • Raymond Liu – bug 修复
  • Reynold Xin – 多项 bug 修复、重构和优化,Netty 网络模块
  • Reza Zadeh – MLlib 中的 bug 和文档修复
  • Rishi Verma – 文档修复
  • RJ Nowling – 代码清理
  • 李锐 – bug 修复
  • Sameer Agarwal – bug 修复
  • Sandy Ryza – 性能改进、Spark 配置和 YARN 修复
  • Sarah Gerweck – bug 修复
  • Sean Owen – 核心和 MLlib 中的 bug 修复和构建修复
  • Sebastien Rainville – bug 修复
  • 朱世雄 – 代码清理
  • 向硕 – MLlib 改进
  • Stephen Boesch – bug 和文档修复
  • Syed Hashmi – PySpark 功能和 bug 修复
  • Takayu Ueshin – Spark SQL 中的可空性修复和其他改进
  • Tathagata Das – Spark 核心中的滚动日志和 bug 修复,Spark Streaming 的修复和监督
  • Tatiana Borisova – bug 修复
  • Ted Malaska – 流式 Flume 改进
  • 邱腾 – SQL 和 Parquet 中的 bug 修复
  • Timothy Hunter – repl 中的 bug 修复
  • Tom Graves – YARN 支持(负责人)
  • Tor Myklebust – MLlib 中的 ALS 改进
  • 于靖 – SQL 修复
  • Uri Laserson – bug 修复
  • Vadim Chekan – 流式中的 bug 修复
  • Varakhedi Sujeet – EC2 修复
  • Vida Ha – EC2 修复
  • Vlad – 文档修复
  • 石旺飞 – bug 和构建修复
  • 王连辉 – bug 修复
  • 王涛 – bug 修复
  • 樊文辰 – 内存泄漏修复
  • William Benton – 核心和 SQL 中的 bug 修复,Spark SQL 的改进
  • Woshilaiceshide – bug 修复
  • 孟祥睿 – MLlib 的多项添加(负责人)
  • Xi Lui – Spark SQL 中的 UDF 改进
  • Ximo Guanter Gonzalbez – SQL DSL 对聚合的支持
  • Yadid Ayzenberg – 文档修复
  • 祁亚东 – 代码清理
  • 高艳杰 – Spark SQL 增强
  • 海艳堂 – bug 修复
  • 叶先金 – bug 修复
  • 沈一杰 – bug 修复
  • 殷槐 – Spark SQL 的多项添加,JSON 支持和类型 API 的负责人。
  • 田毅 – SQL 修复
  • 张立业 – bug 修复
  • 彭振 – bug 修复
  • 李智慧 – bug 修复和调度器功能
  • 叶子川 – EC2 修复
  • 赵宗恒 – bug 修复
  • 杨纵横 – SQL 配置和其他改进

感谢所有贡献者!


Spark 新闻存档