Spark 0.9.0 发布
Spark 0.9.0 是一个重要的发布版本,增加了许多新功能。它将 Spark 更新到 Scala 2.10,简化了高可用性,并更新了项目的多个组件。此版本包括 GraphX 的第一个版本,这是一个强大的新图处理框架,带有一个标准算法库。此外,Spark Streaming 现在已脱离 Alpha 阶段,并包含了显著的优化和简化的容错部署。
您可以下载 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 阶段,并带来了简化的容错和多项优化。
- 当在 Spark 独立集群上以 独立集群高可用模式 运行时,您可以将 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”目录中,以便更容易将管理脚本与用户脚本分开,并将 Spark 安装到标准 Linux 路径。
- 日志配置已改进,如果您未指定 log4j.properties 文件,Spark 将查找默认的 log4j.properties 文件。
核心引擎
- Spark 的独立模式现在支持将驱动程序提交到集群上运行,而不是在提交它的外部机器上运行。您可以通过 org.apache.spark.deploy.Client 类访问此功能。
- 大型 reduce 操作现在如果数据不适合内存,将自动溢出到磁盘。
- 独立模式的用户现在可以限制应用程序默认使用的核心数,如果应用程序编写者没有配置其大小的话。以前,此类应用程序会占用集群上所有可用的核心。
spark-shell
现在支持 -i
选项以在启动时运行脚本。
- 新增了
histogram
和 countDistinctApprox
运算符,用于处理数值数据。
- YARN 模式现在支持随应用程序分发额外文件,并修复了几个错误。
兼容性
此版本与稳定组件中的旧 API 兼容,但某些语言版本和脚本位置已更改。
- Scala 程序现在需要使用 Scala 2.10 而不是 2.9。
- 诸如
spark-shell
和 pyspark
之类的脚本已移至 bin
文件夹,而用于启动和停止独立集群的管理脚本已移至 sbin
。
- Spark Streaming 的 API 已更改,将外部输入源移至单独的模块,
DStream
和 PairDStream
已移至包 org.apache.spark.streaming.dstream
,并且 DStream.foreach
已重命名为 foreachRDD
。我们预计现在 Spark Streaming 已脱离 alpha 阶段,当前的 API 将保持稳定。
- 虽然通过 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 文件合并,独立调度器的高可用模式,各种改进和修复
- 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 绑定,任务序列化工具
- 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 新闻归档