近日,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 新增了很多算法,并对一些旧算法进行了优化,使得它们的性能得到了大大提高。新增一个用作统计功能的功能包,提供了试探性统计功能;新增了特征抽取工具 ( Word2Vec 和 TF-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 )关注我们,并与我们的编辑和其他读者朋友交流。
评论