BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Rags Srinivas 关注 10 他的粉丝 ,译者 臧秀涛 关注 2 他的粉丝 发布于 2015年1月11日. 估计阅读时间: 6 分钟 | GMTC大前端的下一站,PWA、Web框架、Node等最新最热的大前端话题邀你一起共同探讨。

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

 

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT