Spark 1.2版本发布: MLlib支持工作流,SQL支持源数据筛选

jopen 9年前

12月18日,Spark宣布发布1.2版本,和以往发布的版本相比,1.2版本算得上是最大的一次改进,代码来自172个开发者的多达一千次提交。更新内容涵盖核心性能改进、MLlib的新API、Streaming的H/A模式、GraphX相关等等。更多细节可以在下载页查看。在本次的发布中,主要改进包括下面几个方面:

  • Spark Core:对操作和性能方面做了改进,更新了两个主要的子系统,来针对大规模shuffle的情况。第一个改进的是通信管理系统,升级使用了基于Netty的实现。第二个改进是shuffle的机制,升级使用了基于sort的实现。这两个改进,都对大规模shuffle情况下的性能和稳定性做出了贡献。除此之外,Spark还增加了一个弹性机制,用于增强那些长时间运行的ETL任务对集群的利用率。目前这种机制在YARN上已经支持了,后续版本发布的时候应该会覆盖到其他管理平台。最后,核心功能还添加了对Scala 2.11版本的支持。
  • Spark Streaming:本次升级对Streaming部分来讲包括了两个主要特性,一个是Python的API,可 以调用DStream和输出操作几乎全部的功能。目前输入来源支持文本文件和socket传递过来的文本。预计下一个版本发布的时候会添加Kafka和 Flume的输入支持。另一个是WAL(write ahead log)机制下的全H/A模式,在此之前的版本,如果硬盘出了问题,一些尚在缓存区还没有来得及被处理的数据会丢失,该改进可以有效地防止硬盘出问题时的 数据丢失问题。
  • MLLib:最大的改进应该是发布了称为spark.ml的机器学习工具包,支持了pipeline的 学习模式,即多个算法可以用不同参数以流水线的形式运行。在工业界的机器学习应用部署过程中,pipeline的工作模式是很常见的。新的ML工具包使用 Spark的SchemaRDD来表示机器学习的数据集合,提供了Spark SQL直接访问的接口。此外,在机器学习的算法方面,增加了两个基于树的方法,随机森林和梯度增强树。
  • Spark SQL:增加了对外部数据来源的支持。可以将外部数据来源作为临时表挂在的文件系统之中,减少了全部加载数据过来 的种种纠结。为了做到这一点,Spark重写了Parquet和JSON绑定。后续应该会有更多的对其他系统和数据格式的支持发布出来。此外,对于 Hive的支持也增加了定点数类型以及动态划分的插入。
  • GraphX:终于在这个版本里,Spark将GraphX从一个alpha初级开发版本更换到了稳定版本。这意味着目前用 GraphX开发的代码将来移植到Spark新版本的时候,也不用做太多的代码改动了。另外mapReduceTriplet接口被新的 aggreateMessages替换。
  • 其他细节升级包括PySpark支持大数据集、一些UI上的改动以及可以读取二进制图像等内容。

12月16日的Spark的社区聚会上,作者Andrew和Aaron Davidson向前来的热心开发者详细讲解了此次升级的情况(油Tube视频)。另外,明年1月13日,Databricks的Patrick Wendell也会以Webcast的形式来分享Spark 1.2的更多细节

来自:http://www.infoq.com/cn/news/2014/12/spark-1.2-release-mllib-sql