Apache Spark 1.2.0发布:引入基于Netty的实现,支持高可用,并提供机器学习API

jopen 10年前

Apache Spark 1.2.0已经发布,Spark核心引擎在性能和可用性方面都有很大改进。这是来自60多家研究机构和公司的172位贡献者的成果,包括了1000多个补丁。

Spark 1.2.0与之前的1.1和1.0版本完全二进制兼容。该版本引入了一个基于Netty的实现,此举带来了很大的效率提升。Spark流支持Python,并通过预写式日志(Write Ahead Logs,WALs)支持高可用。此外还提供了一组称作spark.ml的机器学习API。

Spark SQL是一个比较新的项目,改进了对外部数据源的支持

Patrick Wendell是Spark早期版本的发布经理,现在是Spark贡献者和PMC成员,目前就职于Databricks。InfoQ对他进行了采访。

InfoQ:先谈谈重要的。对熟悉Map/Reduce的开发者而言,Spark看上去在引导一个新的范型,是不是这样呢?精通Map/Reduce的开发者是否应该关注Apache Spark

Spark最初创建的目标就是改进Map/Reduce模型,所以现在的Map/Reduce开发者绝对应该试试 Spark!与Map/Reduce相比,除了丰富的内置类库以及社区提供的类库,Spark还提供了层次更高、表达性更好的API。做个类比,如果说 Map/Reduce像汇编语言,也就是底层的、命令式的语言,那Spark更像提供了类库和包的现代编程语言。Spark还提供了很大的性能改进。

InfoQ:可以像运行其他程序那样在YARN上运行Map/Reduce程序。Apache SparkYARN之间有什么关系吗?

Spark可以在很多不同的环境中运行,从和已部署的Hadoop共存,到运行在Mesos集群中,还可以运行在像 Databricks Cloud这样的托管服务中。在Hadoop环境中,YARN是集群管理器,帮助启动和调度运行Spark应用的分布式组件。YARN可以将Spark和 MapReduce负载在同样的集群硬件上多路复用。

InfoQ:要成为Spark用户,需要熟悉Scala吗?

与Scala用户相比,Java和Python用户也很多。所以Scala相关的知识并不是必需的。Spark的可编程 的Shell提供了Python和Scala版本(因为Java没有交互式的Shell,所有没有Java版本)。Spark的SQL特性支持这几种语 言。当然要尝试新东西的话,Scala API总是可用的。

InfoQSpark SQL是最近加进来的。能够使用JDBC/ODBC API访问Spark,是不是使Spark对开发者更友好了?

能够在JDBC/ODBC 上暴露出Spark数据集,这是我们去年提供的最受欢迎的特性之一。这些接口支持使用传统的BI和可视化工具查询Spark数据,还支持与第三方应用集 成。利用Spark,不管我们的数据用的是什么格式(JSON、Parquet或某种数据库),都可以在一个程序中实现对数据的ETL(Extract、 Transform和Load)操作,以及执行变换并暴露给查询操作。这是Spark中最强大概念之一,过去需要很多单独的工具,现在都统一了。

InfoQ:磁盘存储没有限制,但内存是有限的。有别于Apache HadoopApache Spark是不是有数据大小的限制?哪类应用能从Apache Spark受益最多呢?

尽管现代的集群中可用内存的量一直在激增,但是总有些情况,数据是无法放到内存里的。在Spark的所有现代版本中,大 部分超出可用内存的操作都会扩展到磁盘上,这意味着用户不需要担心内存限制。举个例子,在数据集的量几倍于集群的可用内存量的情况下,Spark取得了 Jim Gray排序基准测试的胜利,而且就是在这种情况下,Spark的效率还比其他广泛应用的系统高好多倍。

InfoQ:我们再来谈谈性能。在最初由Jim Gray创建的排序基准测试中,Apache Spark成了赢家,让人印象非常深刻。很多开发者都会对基准测试的结果表示怀疑,你能谈一下这些结果是否中肯吗?

之所以选择Jim Gray基准测试,是因为它是由第三方委员会维护的。这就确保它是独立验证的,而且是基于一组定义好的业界规则。对基准测试持怀疑态度的开发者都知道,自 己报告的、未经验证的基准测试一般多是营销材料。而开源之美就在于,用户可以自行尝试,几乎不需要什么成本。我一直鼓励用户选择Databricks Cloud,或者是下载Spark,并用自己的数据集来评估,而不是把太多精力放到基准测试上。

对于用户而言,整体考虑性能也很重要。如果数据在ETL流水线中要花6个小时转成恰当的格式,或者需要3个月的时间实现 模式的变更,那查询加快是不是胜利呢?如果需要把数据转到另一个系统中来执行机器学习,10% 的性能改进是不是值得?数据通常很散乱、复杂,而且端到端的流水线会涉及不同的计算模型,比如查询、机器学习和ETL。Spark的目标是使得在真正的流 水线中处理复杂数据变得非常简单!

有关Apache Spark 1.2.0的特性列表的更详细解释,可以参见Databricks公司的博客。读者可以从Apache Spark的下载页面下载Spark最新版本。

 

查看英文原文:Apache Spark 1.2.0 Supports Netty-based Implementation, High Availability and Machine Learning APIs

来自:http://www.infoq.com/cn/news/2015/01/Apache-Spark-1.2.0-Released