近日,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)关注我们,并与我们的编辑和其他读者朋友交流。