开源集群计算环境:Spark 1.1.0 发布

  • 李士窑

2014 年 9 月 15 日

话题:语言 & 开发架构Spark

近日,Spark 开发团队宣布开源集群计算环境 Spark 1.1.0 发布,该版本是 Spark 1.X 系列版本的第二个 API 兼容版本,它是目前改变最大的一个版本, 具有 171 个开发者。该版本带来了一些操作性和性能的提升,主要体现在核心模块上,扩展了 Spark 的一些最新模块(MLlib 和 Spark SQL)的功能;该版本开始支持 Python,并为 Spark streaming 模块增加了新的组件,该版本主要的改进如下:

1、性能和可用性方面的改进

Spark 1.1.0 在稳定性和性能方面做了大量改进,并为大规模的负载任务提供了新功能。当内存不足时,Spark 可以做到将整个缓存块刷新到磁盘中,以防止内存溢出;Spark 引入了新的算法的实现,优化了大规模计算,还改进了复杂的、耗时的任务的监控可用性,做到了Accumulator 内容可以在 Spark 的 Web 页面中显示、任务处理进度的动态更新、读取输入数据的任务进度报告。

2、Spark SQL

Spark SQL 新增了许多新功能,还进行了许多优化,从而性能也得到了大大的提高。新增的JDBC/ODBC server使得用户能够从很多不同的应用连接到 SparkSQL,并且还提供了共享访问缓存的功能;新增了将 JSON 数据直接加载成 Spark 的 SchemaRDD 格式的功能模块;新增动态字节码生成的功能,能够显著的加快复杂表达式求值的查询;新增了将 Python、Java、Scala 和 Java lambda 函数注册为 UDF 的功能,从而做到在 SQL 中直接调用;新增了一个公共 API 使得用户能够使用自定义的数据源创建 SchemaRDD。

3、MLlib

MLlib 新增了很多算法,并对一些旧算法进行了优化,使得它们的性能得到了大大提高。新增一个用作统计功能的功能包,提供了试探性统计功能;新增了特征抽取工具 (Word2VecTF-IDF) 和特征转换工具(标准化和标准度量);使用 Lanczos 算法做到了对非负矩阵分解(Non-negative matrix factorization)和可缩放矢量图形(SVG)的支持;添加 Python 和 Java 的决策树算法 API。

4、GraphX 和 Spark Streaming

Spark Streaming 新增了Amazon Kinesis数据源;新增了一个可以从 Apache Flume 拉取数据的模式,简化了部署和提高了高可用性;一组基于流的机器学习算法首先引入基于流的线性回归;Spark Streaming 做到了接收数据速率的控制;GraphX 为图的顶点和边添加了自定义存储级别,并提高了数值计算的精度;GraphX 还新增了一个标签传播算法。

5、其他值得关注的改进

PySpark 能够读取和写入任意的 Hadoop InputFormats,包括 SequenceFiles、 HBase、 Cassandra、Avro 以及其他数据源;在 Spark 的 UI 界面上能够进行阶段性的提交;Spark 为所有的网络端口实行严格的防火墙规则 ;GraphX 中的一个溢出 Bug得以修复,该 Bug 影响了超过 4 亿个顶点的图。

另外,Spark 1.1.0 现已提供下载,更多相关信息请查看Release Notes。Spark 由加州大学伯克利分校 AMP 实验室基于 Scala 开发,可用来构建大型的、低延迟的数据分析应用程序。Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,主要体现在 Spark 启用了内存分布数据集,使 Spark 在某些工作负载方面表现得非常优越。尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 Hadoop 文件系统中并行运行。


感谢郭蕾对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

语言 & 开发架构Spark