微信号:infoqchina

介绍:有内容的技术社区媒体

【访谈】1000+个补丁,细数Apache Spark 1.2.0的改进与思路

2015-01-13 18:13 InfoQ


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 Spark和YARN之间有什么关系吗?


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总是可用的。


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


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


InfoQ:磁盘存储没有限制,但内存是有限的。有别于Apache Hadoop,Apache 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最新版本。



 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 执行计划:Oracle的Profile特性与SQL执行计划的稳定性 BP神经网络算法之matlab具体实现 【互联网前沿】第22期:企业专利管理3.0 Java Web 程序员的发展趋势分析 Hello, World of Programming Languages