Spark 0.9.0 版本发布
Spark 0.9.0 是一个重要的版本,它增加了许多新功能。它将 Spark 更新到 Scala 2.10,简化了高可用性,并更新了项目的许多组件。此版本包含 GraphX 的第一个版本,这是一个强大的新图处理框架,它带有一个标准算法库。此外,Spark Streaming 现在已经脱离 alpha 版本,并包含重要的优化和简化的HA部署。
您可以下载 Spark 0.9.0 作为 源码包 (5 MB tgz) 或 Hadoop 1 / CDH3, CDH4, 或 Hadoop 2 / CDH5 / HDP2 (160 MB tgz) 的预构建包。发行版签名和校验和可在官方 Apache 下载站点上找到。
Scala 2.10 支持
Spark 现在运行在 Scala 2.10 上,让用户可以从该版本中的语言和库改进中受益。
配置系统
新的 SparkConf 类现在是配置 SparkContext 上高级设置的首选方法,尽管以前的 Java 系统属性方法仍然有效。 SparkConf 在测试中特别有用,可以确保属性不会在测试中保持设置状态。
Spark Streaming 改进
Spark Streaming 现在已经脱离 alpha 版本,并具有简化的HA部署和多项优化。
- 在具有 standalone 集群 HA 模式的 Spark standalone 集群上运行时,您可以将 Spark Streaming 驱动程序应用程序提交到集群,如果驱动程序或集群主节点崩溃,它可以自动恢复。
- 窗口操作的速度提高了 30-50%。
- Spark Streaming 的输入源插件(例如,Twitter、Kafka 和 Flume)现在是单独的 Maven 模块,因此更容易仅拉取您需要的依赖项。
- 添加了一个新的 StreamingListener 接口,用于监控有关流式计算的统计信息。
- API 的一些方面得到了改进
DStream
和 PairDStream
类已从 org.apache.spark.streaming
移动到 org.apache.spark.streaming.dstream
,以使其与 org.apache.spark.rdd.RDD
保持一致。
DStream.foreach
已重命名为 foreachRDD
,以明确它适用于每个 RDD,而不是每个元素
StreamingContext.awaitTermination()
允许您等待上下文关闭并捕获流式计算中发生的任何异常。 * StreamingContext.stop()
现在允许停止 StreamingContext 而无需停止底层 SparkContext。
GraphX Alpha
GraphX 是一个用于图处理的新框架,它使用图并行计算方面的最新进展。它允许您使用标准 Spark 运算符在 Spark 程序中构建图,然后使用针对分布式计算进行优化的新图运算符对其进行处理。它包括 基本转换、用于迭代计算的 Pregel API 以及 图加载器 和 分析算法的标准库。通过在 Spark 引擎内提供这些功能,与使用不同引擎的工作流相比,GraphX 可以显着加快处理管道的速度。
此版本中的 GraphX 功能包括
GraphX 在此第一个版本中仍标记为 alpha 版,但我们建议新用户使用它而不是功能更有限的 Bagel API。
MLlib 改进
- Spark 的机器学习库 (MLlib) 现在 在 Python 中可用,它在 NumPy 数据上运行(当前需要 Python 2.7 和 NumPy 1.7)
- 添加了一种用于 朴素贝叶斯分类的新算法
- 现在可以使用交替最小二乘模型并行预测多个项目的评分
- MLlib 的文档已扩展为包含 Scala、Java 和 Python 中的更多示例
Python 更改
- Python 用户现在可以使用 MLlib(需要 Python 2.7 和 NumPy 1.7)
- PySpark 现在在 Spark 应用程序 UI (http://:4040) 中显示正在运行的作业的调用位置,可以轻松查看代码的哪个部分正在运行
- IPython 集成已更新为与较新版本配合使用
打包
- Spark 的脚本已组织到“bin”和“sbin”目录中,以便更容易地将管理脚本与用户脚本分开,并在标准 Linux 路径上安装 Spark。
- 日志配置已得到改进,以便如果您未指定 log4j.properties 文件,Spark 会找到默认的 log4j.properties 文件。
核心引擎
- Spark 的 standalone 模式现在支持提交驱动程序程序以在集群上运行,而不是在提交它的外部计算机上运行。 您可以通过 org.apache.spark.deploy.Client 类访问此功能。
- 如果大型 reduce 操作不适合内存,现在会自动将数据溢出到磁盘。
- standalone 模式的用户现在可以限制应用程序默认使用的核心数(如果应用程序编写者未配置其大小)。 以前,此类应用程序占用集群上的所有可用核心。
spark-shell
现在支持 -i
选项以在启动时运行脚本。
- 添加了新的
histogram
和 countDistinctApprox
运算符,用于处理数值数据。
- YARN 模式现在支持使用应用程序分发额外文件,并且已修复多个错误。
兼容性
此版本与稳定组件中的先前 API 兼容,但多个语言版本和脚本位置已更改。
- Scala 程序现在需要使用 Scala 2.10 而不是 2.9。
- 诸如
spark-shell
和 pyspark
之类的脚本已移至 bin
文件夹中,而用于启动和停止 standalone 集群的管理脚本已移至 sbin
。
- Spark Streaming 的 API 已更改为将外部输入源移至单独的模块,
DStream
和 PairDStream
已移至程序包 org.apache.spark.streaming.dstream
,并且 DStream.foreach
已重命名为 foreachRDD
。我们预计当前 API 在 Spark Streaming 脱离 alpha 版后将保持稳定。
- 虽然通过 Java 系统属性配置 Spark 的旧方法仍然有效,但我们建议用户更新到新的 [SparkConf],它更容易检查和使用。
我们预计 Spark 0.9 中的所有当前 API 和脚本位置在发布 Spark 1.0 时将保持稳定。 我们希望尽早进行这些更新,以便让用户有机会切换到新 API。
贡献者
以下开发者为该版本做出了贡献
- Andrew Ash – 文档改进
- Pierre Borckmans – 文档修复
- Russell Cardullo – 用于指标的 graphite sink
- Evan Chan – local:// URI 功能
- Vadim Chekan – 错误修复
- Lian Cheng – 多个位置的重构和代码清理,错误修复
- Ewen Cheslack-Postava – Spark EC2 和 PySpark 改进
- Mosharaf Chowdhury – 优化广播
- Dan Crankshaw – GraphX 贡献
- Haider Haidi – 文档修复
- Frank Dai – MLlib 中的朴素贝叶斯分类器,文档改进
- Tathagata Das – 新运算符,修复和改进 Spark Streaming(负责人)
- Ankur Dave – GraphX 贡献
- Henry Davidge – 大型任务警告
- Aaron Davidson – shuffle 文件合并,standalone 调度程序的 H/A 模式,各种改进和修复
- Kyle Ellrott – GraphX 贡献
- Hossein Falaki – 新的统计运算符,MLlib 中的 Scala 和 Python 示例
- Harvey Feng – hadoop 文件优化和 YARN 集成
- Ali Ghodsi – SIMR 支持
- Joseph E. Gonzalez – GraphX 贡献
- Thomas Graves – YARN 支持的修复和改进(负责人)
- Rong Gu – 文档修复
- Stephen Haberman – 错误修复
- Walker Hamilton – 错误修复
- Mark Hamstra – 调度程序改进和修复,构建修复
- Damien Hardy – Debian 构建修复
- Nathan Howell – sbt 升级
- Grace Huang – 指标代码的改进
- Shane Huang – 管理和用户脚本的分离
- Prabeesh K – Spark Streaming 的 MQTT 集成和代码修复
- Holden Karau – sbt 构建改进和 Java API 扩展
- KarthikTunga – 错误修复
- Grega Kespret – 错误修复
- Marek Kolodziej – 优化的随机数生成器
- Jey Kottalam – EC2 脚本改进
- Du Li – 错误修复
- Haoyuan Li – EC2 中的 Tachyon 支持
- LiGuoqiang – 构建和 YARN 集成修复
- Raymond Liu – 构建改进以及 YARN 支持的各种修复
- George Loentiev – Maven 构建修复
- Akihiro Matsukawa – GraphX 贡献
- David McCauley – json 终点改进
- Mike – 错误修复
- Fabrizio (Misto) Milo – 错误修复
- Mridul Muralidharan – 推测性执行改进,多个错误修复
- Tor Myklebust – Python mllib 绑定,任务序列化的 instrumentation
- Sundeep Narravula – 错误修复
- Binh Nguyen – Java API 改进和版本升级
- Adam Novak – 错误修复
- Andrew Or – 外部排序
- Kay Ousterhout – 多个错误修复和 Spark 调度器改进
- Sean Owen – 样式修复
- Nick Pentreath – ALS 隐式反馈算法
- Pillis –
Vector.random()
方法
- Imran Rashid – 错误修复
- Ahir Reddy – 支持 SIMR
- Luca Rosellini – Scala shell 的脚本加载
- Josh Rosen – scala 和 Java API 的修复、清理和扩展
- Henry Saputra – 样式改进和清理
- Andre Schumacher – Python 改进和错误修复
- Jerry Shao – 多用户支持,各种修复和改进
- Prashant Sharma – Scala 2.10 支持,配置系统,多个较小的修复
- Shiyun – 样式修复
- Wangda Tan – UI 改进和错误修复
- Matthew Taylor – 错误修复
- Jyun-Fan Tsai – 文档修复
- Takuya Ueshin – 错误修复
- Shivaram Venkataraman – sbt 构建优化,EC2 改进,Java 和 Python API
- Jianping J Wang – GraphX 贡献
- Martin Weindel – 构建修复
- Patrick Wendell – 独立驱动程序提交,各种修复,发布经理
- Neal Wiggins – 错误修复
- Andrew Xia – 错误修复和代码清理
- Reynold Xin – GraphX 贡献,任务终止,各种修复、改进和优化
- Dong Yan – 错误修复
- Haitao Yao – 错误修复
- Xusen Yin – 错误修复
- Fengdong Yu – 文档修复
- Matei Zaharia – 新的配置系统,Python MLlib 绑定,调度器改进,各种修复和优化
- Wu Zeming – 错误修复
- Nan Zhu – 文档改进
感谢所有贡献者!
Spark 新闻存档